我有两个类:class jDialog和JFrame
当我单击JFrame中的按钮时,它调用jDialog类并获取jDialog内文本字段上的文本并将其设置为另一个变量。 这是伪代码
class JFrame {
private jDialog jd;
private JButton b;
public JFrame(){
b actionListener {
jd = new jDialog();
jd.setModal(true);
jd.setVisible(true);
String someString = jd.getString();
checkIfExists(someString);
}
}
}
public void checkIfExists(String someString){
if(someString exists) {
JOptionPane.showMessageDialog(null,"String exists);
jd.setVisible(true);
} else {
save someString
jd.setVisible(true);
}
}
class jDialog {
private JButton a;
private String s = "";
private JTextField t;
public jDialog{
a actionListener {
s = t.getText();
setVisible(false);
}
}
public String getString() {
return s;
}
}
当我输入一个存在的字符串时,它会提示JOptionPane它是否存在,但程序只流一次。当我尝试编辑文本字段时,它不会回到“检查”状态。如果字符串存在,则该流程停止在' setVisible(false)' on' actionListener'在' jDialog班'我使用system.out跟踪它。 (同样适用于!存在,它只保存一次,当我尝试保存另一个不存在的字符串时,它会停止)
知道如何保持jDialog运行吗? 我只使用setVisible()来隐藏它,而不是dispose();
答案 0 :(得分:0)
当我尝试编辑文本字段时,如果字符串存在,则不会返回到“检查”字符串
那是因为checkIfExists(someString)
是在b
监听器中完成的,它实例化了一个新的jDialog()
,立即在字段中获取字符串并执行检查。
您应该只实例化一个jDialog
(在JFrame
代码中):
class JFrame {
private jDialog jd = new jDialog();
在b
侦听器集中可见jd
对象(并最终重置JTextField
的内容):
b actionListener {
jd.setVisible(true);
在a
听众(jDialog
班级)中执行检查:
a actionListener {
checkIfExists(t.getText());
setVisible(false);
}