2011-10-10 116 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的仪器来重写代码,如模拟图书馆做其他)。