gpt4 book ai didi

java - JWindow - 不显示

转载 作者:行者123 更新时间:2023-12-02 04:29:51 25 4
gpt4 key购买 nike

我在使用 JWindow 时遇到问题。

这是我的包含 JWindow 的类:

public class NextLevelCounter {
JWindow window = new JWindow();

public static void main(String[] args) {
new NextLevelCounter();
}

public NextLevelCounter() {
window.getContentPane().add(new JLabel("Waiting"));
window.setBounds(0, 0, 300, 200);
window.setVisible(true);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
window.dispose();
}
}

当我从 NextLevelCounter 类运行 main() 时,它工作正常,但当我尝试从另一个类运行它时,它没有显示。例如:

这是在另一个类中:

private void isGameFinished() {
if(food.size() > 0)
return;
else if(food.size() == 0) {
timer.stop();
System.out.println("I am here");
new NextLevelCounter();
System.out.println("I am here 2");
this.level++;
}
}

“我在这里”和“我在这里 2”都显示了 5000 毫秒的差异(理应如此),但窗口没有显示。

我做错了什么?

编辑:

我使用 JWindow 因为我想要一个没有任何边框的空窗口。

最佳答案

hibernate 线程无法显示窗口。尽管在您的第一个示例中确实如此,但这是不好的做法。使用 Swing worker 在 5 秒后关闭 window :

public class NextLevelCounter {
JWindow window = new JWindow();

public static void main(String[] args) {
new NextLevelCounter();
}

public NextLevelCounter() {
window.getContentPane().add(new JLabel("Waiting"));
window.setBounds(0, 0, 300, 200);
window.setVisible(true);

//Create a worker that whill close itself after 5 seconds. The main thread
//is notified and will dispose itself when worker finishes
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
Thread.sleep(5000);
return null;
}

protected void done() {
window.dispose();
}
};

worker.execute();
}
}

关于java - JWindow - 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611708/

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