Swing上一个很让误解的地方

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

你可能感兴趣的:(swing)