java - JFrame 在第一次实例化后不工作?

标签 java user-interface swing jframe instantiation

作为大型应用程序的一部分,我正在编写一个设置类,用于收集和存储用户定义的设置。此类是单例,并在应用程序启动期间实例化。

为了接受用户输入,在 ConfigSettings.java 中通过公共(public)静态方法 selectSettings() 实例化了两个不同的 GUI 框架。两者都是 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 的新实例。

是什么导致了这种行为?

最佳答案

我会检查您第二次调用它时是使用 GUI 线程还是从您自己的线程之一调用。

在该方法的顶部,您可以对其进行测试(AWT 线程很容易通过名称识别)并让它抛出异常,以便开发人员知道不要在错误的线程上调用它——或者您可以阻止他们的线程并在工作线程中执行。

关于java - JFrame 在第一次实例化后不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2181201/

相关文章:

java - 拖动会禁用其他 MouseMotionListener

java - 有人可以帮我处理此消息吗?我尝试创建 ListView ,但运行代码时会弹出此错误

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

c - 如何更改应用程序的 GUI?

java - 单击 JButton 后关闭 jFrame

java - 使用带有布局的paintComponent

java - 功能修改数据库时是否可以使用功能标志/切换?

java - 在 Java 中实现按位与问题

user-interface - GUI 应用程序中的 Web 技术

Java Swing getSize() 返回不准确的值?