我的部分功能看起来像这样
jLabel2.setBackground(Color.YELLOW);
jLabel2.setText("Status : Idle");
boolean ok=cpu21.RestartSSH();
if(ok){
jLabel2.setBackground(Color.GREEN);
jLabel2.setText("Status : Run");
}
在我输入功能标签之前,绿色和运行是标签,但是当我进入功能标签时,它不会将颜色变成黄色(功能RestartSSH执行5-6秒,但是在此期间标签不会改变颜色并捕获)。我在绘画中犯错误的地方?
最佳答案
RestartSSH
,否则您的GUI无法响应事件。 例子:
final JLabel jLabel2 = new JLabel("HELLO");
jLabel2.setOpaque(true);
jLabel2.setBackground(Color.YELLOW);
jLabel2.setText("Status : Idle");
//perform SSH in a separate thread
Thread sshThread = new Thread(){
public void run(){
boolean ok=cpu21.RestartSSH();
if(ok){
//update the GUI in the event dispatch thread
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jLabel2.setBackground(Color.GREEN);
jLabel2.setText("Status : Run");
}
});
}
}
};
sshThread.start();
(更新:添加了对
SwingUtilities.invokeLater
的调用)