JLabel着色和制作透明

时间:2014-06-13 09:00:00

标签: java swing colors 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 个答案:

答案 0 :(得分:1)

setOpaque()不会改变背景颜色,因此它仍然是黄色。

尝试

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

或者更好地使用其他标记,例如。你自己的变量。

答案 1 :(得分:-1)

添加try catch语句并在使用lbl.repaint()后每次颜色更改时重新标记标签;

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();
}