Java 更改JPanel默认图形

Java 更改JPanel默认图形,java,swing,jpanel,graphics2d,Java,Swing,Jpanel,Graphics2d,当我有JPanel时,它有它的默认图形,它被传递到paint(Graphics g)和类似的函数。我可以自己切换默认的图形吗?从JPanel类的外部?我正在寻找类似JPanel.setGraphics(Graphics g)的东西。多谢各位 否,但您可以重写其paintComponent方法,将作为参数传递的Graphics对象强制转换为Graphics2D,并在其上绘制所需内容。据我所知,控制传递哪个图形对象的唯一方法是启用“调试图形”选项。这是通过调用JComponent.setDebugG

当我有
JPanel
时,它有它的默认图形,它被传递到
paint(Graphics g)
和类似的函数。我可以自己切换默认的
图形吗?从
JPanel类的外部
?我正在寻找类似
JPanel.setGraphics(Graphics g)
的东西。多谢各位

否,但您可以重写其
paintComponent
方法,将作为参数传递的
Graphics
对象强制转换为
Graphics2D
,并在其上绘制所需内容。

据我所知,控制传递哪个图形对象的唯一方法是启用“调试图形”选项。这是通过调用
JComponent.setDebugGraphicsOptions(int)
完成的,它将用
javax.swing.DebugGraphics
的实例替换原始图形对象


DebugGraphics
的实例是在类
JComponent
的方法
getGraphics
中硬编码的,因此我看不到在这里使用您自己的实现的方法(除了像模拟库那样使用JVM的工具重写代码之外)。

为什么要这样做?你的目的是什么?因为在我的计算机图形学课上,我们使用Java作为学校默认语言。我们有编程老师编写的支持库。我建议用Volatile映像替换buffereImage以加快速度。。。为了做到这一点,在没有原始源代码的情况下,只有JAR文件,并且保持相同的接口完好无损,我需要替换它的图形img,而不需要重写paint方法…即使只有一个JAR文件,您也应该能够扩展JAR文件中任何JPanel派生的对象,重写其paintComponent方法以及该方法中的所有图形代码。我认为这是不可能的,唯一的办法是如果jar类与final类和私有paintComponent方法是不可变的。我知道,但我担心我忽略了最终导致崩溃或严重异常的东西所使用的东西:)Fiddlesticks。所以你宁愿尝试做一些像替换图形对象这样卑鄙的事情?来吧,穿上你的大男孩长裤,穿上它。确保首先在覆盖内部调用super的方法。