![]() |
1
2
这是因为你没有让framea完成它的构建过程,你中断了它,然后在同一个线程中显示另外两个帧。 我建议您更改策略,使用工厂方法,可能与swingutilities.invokelater方法结合使用。 假设你有这样的东西:
改变它:
没什么变化,你只是添加了工厂方法,以后你可以:
在第二个代码中要做的是将逻辑与类构造函数分离,并将其放入工厂方法中。这样如果 这个特殊的逻辑是它应该弹出 返回true,显示b和c 如前所述,您也可以在那里使用JDialog,但是当您分离职责时,几乎所有的问题都会消失。 |
![]() |
2
1
您描述的症状听起来像是锁定了事件线程——这可能与您如何启动帧无关——您希望在调试器中运行,并且当它开始显示症状时,检查事件线程的状态。 (尽管我同意线程中的其他所有人的观点,您应该将框架启动逻辑拉到其他地方——但是,从另一个框架构造函数调用框架构造函数没有什么“不安全”的地方——它们与任何其他构造函数都没有区别。这可能是一个糟糕的设计——但它不应该锁定事件线程。) |
![]() |
3
0
您将要使用JDialog。有必要做这件事。 |
![]() |
4
0
你应该考虑一下你的逻辑。在另一帧的构造函数中创建新帧听起来很奇怪。如果您在构造函数中这样做-这意味着第一帧还没有显示出来。为什么不向您展示框架A构造函数外部的框架B和C——逻辑上看起来是相同的。但根据您的条件,您可以创建框架A并将其设置为可见。 |
![]() |
Ummayair Ahmad · 如何从另一个类添加到JPanel 2 年前 |
![]() |
Klopo22 · 如何将插入符号移动到另一个JTextField 2 年前 |
![]() |
Kirito · 如何将焦点设置为图像或标签?[Java Swing] 2 年前 |
![]() |
Didi1995 · 在swing java中传递文件路径 2 年前 |
![]() |
dl784 · Java Swing登录窗口未关闭 2 年前 |
![]() |
user16911064 · 在JTable中创建组 2 年前 |
![]() |
Jessie Smetts · 它不会划清界限 2 年前 |
![]() |
shrimpwidget · 如何对齐并排面板,Java swing 2 年前 |