关于 EventQueue.invokeLater() here. 有一个很好的讨论
我有一个 Controller 类 Master()
,它在我的应用程序中加载两个 UI 窗口。例如:
public class Master(){
public Master(){
aView = new subView();
bView = new subView();
其中subView
扩展了JFrame并具有以下主要方法:
public class SubView extends JFrame{
....
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SubView();
}
});}
}
请注意,SubView.main()
使用 invokeLater()
。我的问题是如何在 master 中调用Later()?像这样的东西:
public class Master(){
public Master(){
aView = EventQueue.invokeLater(new subView);
bView = EventQueue.invokeLater(new subView);
事情没这么简单,因为 invokeLater 不返回任何内容。此外,因为它是“稍后调用”,所以 aView 和 bView 的值在 Master 中保持为空。无论如何,是否可以以与 main()
在 runLater 线程中调用其中之一相同的方式来调用两者?
最佳答案
我会使用invokeAndWait,因为您需要等待结果。
SubView aView, bView;
public Master() {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
aView = new SubView();
bView = new SubView();
}
});
// aView and bView will be initialised.
}
关于java - 具有多个 swing UI 的 EventQueue.invokeLater,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942706/