[英]JLabel doesn't change back color
我的部分功能看起来像这样
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
调用)
JLabels默认是不透明的,因此默认情况下不会绘制它们的背景。 试试:
jLabel2.setOpaque(true);
或者你可能需要在改变颜色后调用重绘:
jLabel2.repaint();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.