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());
	}
	
}


   下面是該類的一個應用實例,一個聊天界面:

 

    聊天界面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章