我正在尝试着色并使其透明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
检查标签的背景是否已经是黄色时。如果是......它会变色,但如果它没有它的颜色。
它第一次有效。
leftP=3
。leftP=4
。leftP=3
...但不幸的是我不明白为什么它仍然没有颜色,只要我点击标签就继续进入ELSE
循环。答案 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();
}