Java JLabel着色和透明化
当我点击标签时,我正试图将其着色并使其透明Java JLabel着色和透明化,java,swing,colors,jlabel,Java,Swing,Colors,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{
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
if检查标签的背景是否已经是黄色时。如果是。。。它会给它脱色,但如果不是,它会给它上色。
这是第一次奏效
leftP=3
leftP=4
leftP=3
变成黄色。。。但不幸的是,我不明白为什么它仍然没有颜色,每当我点击标签时,它就会继续进入ELSE
循环或者最好使用另一个标记,例如您自己的变量。添加try-catch语句,并在每次颜色更改后使用lbl.repaint()重新绘制标签
作为旁白。使用带有一个彩色(默认)和一个透明(选定)图标的
jLoggleButton
。容易得多……例如。
lbl.setOpaque(false);
lbl.setBackground(Color.BLACK);
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();
}