相关疑难解决方法(0)

是否需要在事件队列上运行Robot方法?

机器人是AWT库的一部分,但它似乎与大多数库的其他部分完全不同.我正在创建一个Swing GUI,它将Swing与Java Native Access(JNA)和Robot混合在一起,以允许Java驱动某些MS Windows/Citrix工作程序.我的直觉是,因为Robot会在"平台的本机输入队列"上排队事件,我想做的最后一件事就是在EDT上运行它,但另一方面,AWT和Swing库中的大多数类都是如此.应该在Swing事件线程运行.因此,为了让我在脑海中澄清这一点,请让我尽可能具体地问一个问题:

机器人方法(特别是按键和释放,鼠标移动,鼠标按下和释放)是否应该在Swing事件调度线程(EDT)上运行?

java swing thread-safety awtrobot

17
推荐指数
3
解决办法
2017
查看次数

为什么我的 JTextArea 没有更新?

我有如下代码:

class SimplifiedClass extends JApplet {

    private JTextArea outputText;
    // Lots of methods
    public void DoEverything() {
        String output = "";
        for(int i = 0; i <= 10; i++) {
            output += TaskObject.someLongTask(i);
            outputText.setText(output);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当 setText 被调用时,它不是在循环的每次迭代后更新文本区域,而是在任务的所有运行完成后才更新文本。为什么会发生这种情况,我该如何解决?

java concurrency swing jtextarea event-dispatch-thread

5
推荐指数
1
解决办法
1万
查看次数