Java Thread.sleep无法使用gui

时间:2017-05-10 00:13:24

标签: java multithreading swing user-interface

我试图让程序等待用户点击GUI。 但while (!enteredField) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } 只是睡眠整个GUI。所以我只能看到一个空窗口。

代码:

npm install --save readdir

2 个答案:

答案 0 :(得分:0)

Swing事件需要在Event Dispatch Thread上进行。

你试过吗

SwingUtilities.invokeAndWait(() -> Thread.sleep(20))

https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingUtilities.html#invokeAndWait--

答案 1 :(得分:0)

之前我遇到过这样的问题。所以你并不孤单。我犯了这样的错误。

您的问题

while (!enteredField) {
    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        e.printStackTrace();
     }
}

<强>解决方案

Thread thread = new Thread(() -> {
    while (!enteredField) {
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
         }
    }
});
thread.start();

*详细回复*


' W 你做过的就是你在while循环中创建了一个线程。基本上你暂停整个GUI 10毫秒,事实上整个程序。此外,我不明白你的目标是什么。你说你想等待用户点击GUI.Suggestions就是,听听按钮点击。例如Button.setOnAction(() - &gt; {});这会让他工作而不是睡觉。我只是你想要暂停或睡觉的唯一情况就是如果你是动画的东西。