[英]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.