似乎无法在事件处理程序中设置文本

时间:2012-01-27 17:22:28

标签: java event-handling

我对Java很陌生,所以我可能会遗漏一些基本的东西,但这里有。

我有一个带按钮的GUI,我想点击它,将窗口中的文本更改为某些内容然后执行任务

        connectButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    databaseConnectWindow.setText("Connecting...");
                    connectToDatabase();
                 }
        });

但是使用上面的代码,只有在conectToDatabse完成之后,databaseConnectWindow中的文本才会更改。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

将SwingWorker用作后台线程,这样就不会锁定GUI线程,也称为事件派发线程或EDT。有关详情,请查看Lesson: Concurrency in Swing

答案 1 :(得分:1)

您正在UI线程中调用connectToDatabase() 在UI线程空闲之前,UI无法更新。

您应该在后台线程上连接到数据库。