我有一个应用程序,它使用 JDialog 从用户那里获取输入,然后搜索文件,而不是浏览对话框,而是使用元数据的更专业的对话框。
这一切都很好。唯一的问题是我希望能够让用户输入搜索值,按确定,并接收这些值来执行搜索和一些其他操作(来自打开对话框的调用类)而不关闭对话框?
有必要从调用类执行这些操作,因为这是编辑器中插件的一部分。
基本上,简而言之,它有点像查找对话框在任何编辑器中的工作方式 - 当您从一个找到的项目跳到下一个项目时,查找对话框保持打开状态......
好像我错过了一些简单的东西,但我看不到如何做到这一点。
编辑:
根据 Nick Rippe 建议的教程,我在一个简单的测试应用程序中尝试了这个,但我认为我以某种方式误解了它,因为我无法让它工作。我添加了一个带有 getter 和 setter 的字段,然后尝试获取它:
主类:
public class TestJFrames {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
TestForm frame = new TestForm();
frame.setDefaultCloseOperation(frame.DO_NOTHING_ON_CLOSE);
frame.addPropertyChangeListener("fileSelected", new FileSelectedListener());
frame.setVisible(true);
}
}
class FileSelectedListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("TEST");
}
}
从表单类:
private String fileSelected;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.setFileSelected("Test");
}
public String getFileSelected() {
return fileSelected;
}
public void setFileSelected(String fileSelected) {
this.fileSelected = fileSelected;
}
我最终找到了不同的解决方案。如果它可以帮助遇到类似困难的其他人,请在此处发布:
我突然想到,我可以通过将调用类注册为对话框类的侦听器来侦听按钮事件。我几乎遵循了这个例子:Create a custom event in Java