2012-06-08 17 views
0

比方說,我們有以下的情況:使用圖形

JPanel panelp=new JPanel(); 
paintSomething(panelp.getGraphics(); 

,並在不同的對象別處,方法:

void paintSomething(Graphics g){ /*code*/ } 

我不希望重寫paintComponent方法的panelp。我如何使用Graphicspanelp從方法paintSomething繪製panelp

+0

爲什麼你不希望覆蓋'paintComponent'描述?這是在Swing中進行自定義繪畫的推薦方式。 – user1329572

+0

'panelp'中是否有組件? –

+0

是的,它有很多組件。我想在這些組件之間做一些動畫。 –

回答

3

你可以繪製你的東西在paintSomethingBufferedImage然後您可以通過覆蓋paintComponent

+0

我不行。我想在面板上創建一些動畫,比如微軟Word Clippy –

+0

好主意,取消刪除+1 – mKorbel

+0

@mKorbel謝謝:) – GETah

4

whatever.getGraphics()是快照提請面板是第一次後會自動消失,當

  • 快照重漆

  • JComponetsMouseKey Events內部重新粉刷, se事件在具體實現JComponets API

  • 使用whatever.getGraphics()的簡單例子是打印到打印機或將當前的GUI作爲打印屏幕保存到例如打印機。 JPEG或PGN文件

基本的東西在2D Graphics

+0

+1你剛剛解決了我腦海中的一個問題! – GETah

+0

哦,有沒有一種方法可以從外部繪製某個組件? –

+1

@ClaudiuC:對於[示例](http://stackoverflow.com/a/2901472/230513),使用'BufferedImage'。 – trashgod