【发布时间】:2016-03-11 14:27:17
【问题描述】:
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 线程中调用其中一个的相同方式调用两者?
【问题讨论】:
-
你真的需要吗?如果
Master总是在 EDT 上实例化,则无需使用invokeLater。 -
(还有:
aView = subView();应该是aView = new SubView();吗?) -
(最后:
aView = EventQueue.invokeLater(new subView);是基本构造的错误语法。可能意味着aView = EventQueue.invokeLater(new SubView());?) -
你说得对,这就是为什么我指定它是元代码;我知道我犯了错误。将尝试清理它,谢谢。
标签: java swing invokelater