JTextAreaUI定制

通过下列操作可以形成一个半透明无边框输入域的效果

 

#输入域完全透明setOpaque(false)  
#设置输入域无边框setBorder(null) 
   (在组件的重绘方法中绘制一个半透明与输入域等大的矩形框)
#取得能够进行透明度设置的2D引擎Graphics2D g2 = (Graphics2D);
#创建一个AlphaComposite来表示透明度
         AlphaComposite ac = AlphaComposite.

                  getInstance(AlphaComposite.SRC_OVER,0.4f);  
#设置透明度和颜色g2.setComposite(ac);g2.setColor(Color.white);

class TransparentArea extends JTextArea {
	
	public TransparentArea(){
		super();
		this.setOpaque(false);//将输入域设置成透明
		this.setAutoscrolls(true);//输入域自动显示刚输入的内容
		this.setBorder(null);//去边框
		setLineWrap(true);//自动换行
		setFont(new Font("MicrosoftYahei",
                                  Font.PLAIN,16));//输入域的字体
		setWrapStyleWord(true);//一个英文单词在同一行
	}
	
	@Override
	public void paintComponent(Graphics g) {
	              super.paintComponent(g);
                            //取得绘制组件的2D引擎
		Graphics2D g2 = (Graphics2D)g;
		//设置透明度为0.4f
		AlphaComposite ac = AlphaComposite.getInstance(
				AlphaComposite.SRC_OVER,0.4f);
		g2.setComposite(ac);
		g2.setColor(Color.white);
		//绘制一个与输入域等大小的填充矩形框来形成其半透明效果
		g2.fillRect(0, 0, getWidth(), getHeight());
	}
	
}


   下面是该类的一个应用实例,一个聊天界面:

 

    聊天界面

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值