今天在修改我一个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了)