2014-06-13 46 views
0

我想着色和使透明相同JLabel當我點擊它。JLabel着色和製作透明

int leftP=4;  //initialized at start of code 
if (leftP>0){ 
     if (lbl.getBackground()!=Color.YELLOW){ 
      lbl.setBackground(Color.yellow); 
      lbl.setOpaque(true); 
      leftP--; 
     }else{ 
      lbl.setOpaque(false); 
      lbl.repaint(); 
      leftP++; 
     } 
} 

這裏的問題是,當leftP>0如果檢查標籤的背景已經是黃色的。如果它是...它不是它的顏色,但如果它不是它的顏色。 它第一次運作。

  1. 我點擊標籤,它變成了黃色和leftP=3
  2. 我重新點擊標籤,它變爲沒有黃色作爲背景和leftP=4
  3. 當我點擊第三次。我期望它會變成黃色,leftP=3 ...但不幸的是,我不明白爲什麼它仍然沒有顏色,只要點擊標籤,它就會繼續輸入ELSE循環。
+2

另一方面。使用帶有一個彩色(默認)和一個透明(選定)圖標的JToggleButton。更容易。 –

+1

..例如[如此處所示](http://stackoverflow.com/a/18656168/418556)。 –

回答

1

setOpaque()不會改變背景顏色,所以它仍然是黃色的。

嘗試

lbl.setOpaque(false); 
lbl.setBackground(Color.BLACK); 

或者更好的使用另一種標記,例如。你自己的變量。

-1

使用lbl.repaint(),每次更換顏色後添加try catch語句和Remaint標籤;

try{ 
    int leftP=4;  //initialized at start of code 
    if (leftP>0){ 
     if (lbl.getBackground()!=Color.YELLOW){ 
      lbl.setBackground(Color.yellow); 
      lbl.setOpaque(true); 
      lbl.repaint(); 
      leftP--; 
     }else{ 
      lbl.setOpaque(false); 
      lbl.repaint(); 
      leftP++; 
     } 
    } 
}catch(Exception ee){ 
ee.printStackTrace(); 
}