SwingX - Painter
來看看,即將在JDK7中加入到Swing的Painter在玩什麼花樣... ( P.S 在第四個時程已經加入 )
SwingX 使用了這個介面(沒錯,Painter是個Interface),來繪製它元件的外觀。
這點從各類的元件(SwingX)在覆寫 protected void paintComponent(Graphics g) 中就可以得知。
下面是JXPanel覆寫paintComponent(Graphics g)的程式碼 (backgroundPainter就是Painter)
使用Painter很簡單,可以用下列這些方法:
- 實作Painter
- 直接使用SwingX內部預先實作好的一些Painter類別(GlossPainter 、ImagePainter、MattePainter ...etc)
Implements Painter
實作Painter介面是很容易的,因為只需要去實作一個方法
public void paint(Graphics2D arg0, Object arg1, int arg2, int arg3)
這和以前自己覆寫 protected void paintComponent(Graphics g)很大的不同點在於:
以前的做法必須和元件綁在一起,每繪製一次自定的外觀,就要去繼承(使用)一個元件,太不方便了。而且也會增加了彼此間的相依性,很容易讓整個架構綁死死的。
現在這樣做的話,就可以自己定義一些常用的Painter,在各個需要用到的類別拿來使用
下面就是簡單實作一個Painter的程式 :) 在SwingX中的元件增加了一個方法,來繪製元件
setBackgroundPainter(Painter painter)

這樣使用起來,真的方便許多。另外,SwingX一些已經實作好的Painter,它們的使用方法都很容易,有興趣的話可以參考developerlife上面的介紹:)