2014-06-13 41 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(); 
}