今天在修改我一个Calendar的Swing项目,在实现一个功能,就是做标志的时候,如果原来的颜色是蓝色的话,再点一下就变成了透明,(因为Calendar的背景是一张海贼王的图片),如果不是蓝色的话,那点一下就变成蓝色。
原来我的代码是:
for(int i=0;i<42;i++){
final DateLabel label = new DateLabel(" ",JLabel.CENTER);
calendarPanel.add(label);
dateLabels[i] = label;
label.addMouseListener(new MouseListener(){
public void mousePressed(MouseEvent e){
if(markFlag){
if(label.getBackground().equals(Color.BLUE)){
label.setOpaque(false);
}else{
label.setOpaque(true);
label.setBackground(Color.BLUE);
}
}
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
});
}
运行后,发现Label的背景色变成蓝色后,无法变回透明,于是试着改成这样。
for(int i=0;i<42;i++){
final DateLabel label = new DateLabel(" ",JLabel.CENTER);
calendarPanel.add(label);
dateLabels[i] = label;
label.addMouseListener(new MouseListener(){
public void mousePressed(MouseEvent e){
if(markFlag){
if(label.getBackground().equals(Color.BLUE)){
label.setBackground(Color.WHITE);
label.setOpaque(false);
}else{
label.setOpaque(true);
label.setBackground(Color.BLUE);
}
}
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
});
}
结果发现行了。,狂晕,为什么把背景色变成透明,还要再定义背景的颜色呢(PS:我用的已经是JDK1.6了)