我想在单击按钮时更改按钮文本,但它不会出现在GUI上。在intellje IDE中,我可以看到它已更改,但是为什么没有出现在GUI中?
这是代码片段:

final WebLabel loading = new WebLabel("Disconnected...",  IconLib.ICON_19X17_THICK_ARROW_RIGHT_LIGHTBLUE.getIcon(), SwingConstants.CENTER);
final WebLabel ipLabel = new WebLabel(host);
final JPanel horizontalMiddlePanel = new JPanel();
final WebButton disconnect = new WebButton("Connect",    IconLib.ICON_16X16_QUESTIONMARK_ON_BLUE_CIRCLE.getIcon());
    disconnect.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (loading.getText().equals("Connected...")) {
                loading.setText("Disconnected...");
                loading.setIcon(IconLib.ICON_19X17_THICK_ARROW_RIGHT_LIGHTBLUE.getIcon());
                disconnect.setText("Connect");

            } else {
                loading.setText("test");
                loading.setIcon(IconLib.ICON_19X17_THICK_ARROW_RIGHT.getIcon());
                ipLabel.setText(ipLabel.getText().replace(" Unreachable try again",""));
                ipLabel.setForeground(Color.green);
                disconnect.setText("Connecting");
                callflexConnection(ipLabel, 3001, loading, disconnect);
            }
        }
    });

最佳答案

如果不将代码分为两个部分,那是不可能的

1)更新JButton#setText

然后

2)执行其余代码


通过使用javax.swing.Timer
SwingWorker执行
包裹在Runnble#Thread里面,


3)此代码在EDT上执行,然后所有更改都在EDT上完成,并在同一时刻结束

09-08 08:12
查看更多