2011-10-10 155 views
0

當我有JPanel時,它有它的默認圖形傳遞給paint(Graphics g)和類似的功能。我可以以某種方式爲我自己切換默認的Graphics嗎?從JPanel class以外?我正在尋找類似JPanel.setGraphics(Graphics g)的東西。謝謝。更改JPanel默認圖形

+2

你爲什麼要這樣做?你的目的是什麼? –

+0

在我的計算機圖形學課程中,我們使用Java作爲學校默認的語言選擇。我們有編程老師編寫的支持庫。我建議用易變的圖像替換BufferedImage以加快速度...爲了這樣做,沒有原始的源代碼,只有JAR文件,並且完整地保留了相同的接口,我需要替換它的Graphics img,而不能覆蓋繪圖方法... –

+0

即使只有一個Jar文件,您也應該能夠擴展Jar文件中的任何JPanel派生對象,覆蓋其paintComponent方法以及該方法中所有您自己的圖形代碼。我認爲這是不可能的唯一方法是如果jar類不可改變與最終類和私人paintComponent方法。 –

回答

2

沒有,但是你可以重寫其paintComponent方法,鑄成參數傳遞的Graphics對象Graphics2D,並繪製任何你想要的就可以了。

0

據我所知,控制傳遞哪個Graphics對象的唯一方法是啓用調試圖形選項。這是通過調用JComponent.setDebugGraphicsOptions(int)完成的,它將用javax.swing.DebugGraphics的實例替換原始圖形對象。

DebugGraphics的instanciation被硬編碼在JComponent類的方法getGraphics,所以我看不到出路在這裏用自己的實現(不是使用JVM的儀器來重寫代碼,如模擬圖書館做其他)。