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的方法。