作为一个更大的应用程序的一部分,我正在编写一个设置类,它收集和存储用户定义的设置。这个类是一个单例,并在应用程序启动期间被实例化。
为了接受用户输入,在 ConfigSettings.java 中实例化了两个不同的 GUI 框架,来自一个公共静态方法 selectSettings()。两者都是 JFrame 的子类。以下是文件选择对话框的实例化代码:
private void selectFile() {
SelectFileGUI fileSelector = new SelectFileGUI();
fileSelector.setVisible(true);
synchronized(this) {
try {
wait();
} catch(Exception e) {
e.printStackTrace();
}
}
fileSelector.dispose();
}
当应用程序最初运行时,这可以正常工作。但是,稍后用户可能会更改他们选择的设置,包括选择新的源文件。这是通过再次调用 selectSettings() 来完成的。
我遇到的问题是,任何后续尝试再次实例化和显示这些 GUI 组件都会导致显示新的 JFrame,但背景为灰色,并且没有显示按钮或其他组件。在调试时,我也未能直接创建 SelectFileGUI 的新实例。
什么可能导致这种行为?