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了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值