更具体地说,我在
MouseDragged()
方法中通过创建JPanel
类的对象并使用paintComponent(getGraphics())
方法(相应地使用AuxClass2
和AuxClass1
)使用JPanel
类的paintComponent()
方法。显然,使用
getGraphics()
和paintComponent()
而不是repaint()
是一个坏主意,我怀疑这与内存使用有关。每次用户拖动鼠标时调用AuxClass2
也不是一个好主意。另外,JPanel vs Canvas(即swing vs awt)有点令人困惑。什么时候使用它们?
我一直在试图找到解决方法,但没有找到一个,特别是对于
getGraphics()
方法:还有什么其他方式可以将图形添加到面板中?
paint
->paintComponent
->paintBorder
->paintChildren
。容易忽略调用super.paint
并产生奇怪的绘图结果,但是也很容易通过在自定义绘图后调用super.paint
覆盖绘图或绘制子组件,这可能听起来像个好主意,但是,每个子组件都可以独立于父容器进行绘制,这意味着您最初绘制的任何内容都可能被覆盖。 - MadProgrammer