问题描述
我对Java和Swing中的UI开发有些陌生。当我单击JMenuBar中的一个项目,然后在关闭对话框之前验证该对话框时,我想打开一个对话框(因此,除非用户输入满足特定条件,否则按X或ok按钮将不起作用)。
此刻,我的项目的结构如下:
Window.java
import javax.swing.*;
public class DialogPanel extends JPanel {
private JTextField id_field = new JTextField(20);
public DialogPanel() {
add(new JLabel("Insert something to validate here:"));
add(id_field);
}
}
以及 DialogPanel.java
中对话框的内容Convert.ToDateTime(value,CultureInfo.GetCultureInfo("de-DE"))
.ToString(CultureInfo.InvariantCulture)
现在显然这还没有进行任何对话框验证。我一直在努力使它发挥作用,但我发现a working example of dialog validation,但似乎无法将其集成/使整个过程正常运行。 如果我从链接中获取示例,该如何调用对话框?我认为我不应该使用JOptionPane,但是每次我尝试以其他任何方式显示jdialog时,都会收到“无法共享Boxlayout”错误。 请帮助我将其集成到我的代码中。
解决方法
首先,您需要在DialogPanel
类中添加吸气剂。如果您想验证在idField
中键入的信息,则必须通过在ActionListener
上放置JtextField
来向此类添加代码。
public class DialogPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JTextField idField = new JTextField(20);
public DialogPanel() {
add(new JLabel("Insert something to validate here:"));
add(idField);
}
public JTextField getIdField() {
return idField;
}
public String getIdFieldString() {
return idField.getText();
}
}
然后,您的结果将如下所示。
static class Open_Dialog implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
DialogPanel dialog = new DialogPanel();
int result = JOptionPane.showConfirmDialog(null,dialog,"Test",JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
String string = dialog.getIdFieldString();
// Do your processing
}
}
}