关于EventQueue.invokeLater()有一个很好的讨论here.
我有一个控制器类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 - 具有多个摆动UI的EventQueue.invokeLater,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35942706/