SwingX - Painter

05:39下午 十月 08, 2009 in category Swing by UndeadJ

來看看,即將在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上面的介紹:)

 

迴響:

發表迴響:
迴響功能已被關閉