gpt4 book ai didi

java - 具有多个 swing UI 的 EventQueue.invokeLater

转载 作者:行者123 更新时间:2023-12-02 03:50:14 24 4
gpt4 key购买 nike

关于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com