我有两个类: jDialog类和JFrame类
当我单击JFrame中的一个按钮时,它调用jDialog类并获取jDialog内textfield上的文本,并将其设置为另一个变量。这是伪代码
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它是存在的,但是程序只流一次。当我尝试编辑textfield时,它不会返回到字符串的“检查”(如果它存在的话),而是停止在'setVisible(false)‘上的’actionListener‘在'jDialog类’中使用system.out跟踪它。(同样适用于!存在,它只保存一次,当我尝试保存另一个不存在的字符串时,它将停止)
知道如何保持jDialog运行吗?我只使用setVisible()来隐藏它,而不是hide ();
发布于 2015-01-28 11:33:31
当我尝试编辑textfield时,如果它存在,它就不会返回到字符串的“检查”
这是因为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);
}https://stackoverflow.com/questions/28190930
复制相似问题