java - InvokeLater() - 一次就够了吗?

标签 java swing jframe event-dispatch-thread invokelater

我使用推荐的代码启动我的交互式程序,它使用 Swing。 :

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(
        new Runnable() {
          public void run() {
            createAndShowGUI();
          } } ) };

它创建一个 JFrame,将其称为“Foo”,并在用户关闭该窗口时结束(通过使用操作系统的 Close-Window X 图标或其他操作系统方式关闭应用程序)

我想显示另一个窗口“Bar”,获取用户输入,用我自己的 Swing 调用关闭该窗口,然后显示“Foo”窗口。

我可以为 Foo 和 Bar 重用相同的 JFrame,并在两者之间清除它。但我更喜欢让他们每个人在设计上更加独立。因此,Foo 中的 ActionListener 需要关闭 Foo 的框架,并调用显示 Bar 的代码。

是否需要使用InvokeLater()调用显示Bar的代码?为了获得更多的设计独立性,我的 main() 是否应该启动并同步两个线程?

最佳答案

用户触发 Action 监听器代码在 EDT 中执行,因此您无需再次包装它。也就是说,使用 CardLayout 可能比使用多个框架更合适。

关于java - InvokeLater() - 一次就够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273424/

相关文章:

java - 为什么当我设置操作时 JButton 的图标消失?

java - 为什么我的 JFrame 图标没有从默认的 java 图标更改?

java - java中的事件处理程序...程序没​​有错误,但在事件操作未显示后

Java JFrame 未显示(仅标题栏)

java - 如何添加我的文本区域

java - keyReleased 未执行代码

java - 以m_开头的成员变量命名符合javabean风格?

java - JSTL 的 rt 和 el 版本有什么区别?

java - MapStruct:如何将所有属性映射到列表的第一个元素?

java - 如何自定义(更改)JEditorPane 边框?