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());
}
}
下面是该类的一个应用实例,一个聊天界面: