![]() |
1
2
我不知道这是哪个组件,但是在绘制例程中设置按钮图标是个坏主意。它肯定会导致按钮被重新油漆。如果按钮是组件的子级,那么设置按钮也会使组件无效,从而导致无限循环。 在其他地方设置图标,例如对话框/窗口的初始设置位置。 |
![]() |
2
1
如果ImageIcon是另一个实例。
但是,在本例中,ResourceLoader(自定义类)返回了ImageIcon的新实例。当然是同一个图像,但这是另一个实例。如果你反编译代码,你会看到setIcon(至少对于JButtons),如果newIcon!=旧图标。 解决方案是在ResourceLoader中使用HashMap,这样可以避免多次加载图像,因为大多数图像使用非常频繁(如果可以的话,还可以重用实例)。结果表明,总的来说,这种快速调整还节省了相当多的内存消耗作为额外的奖励。 |
![]() |
3
0
|
![]() |
4
0
问题是您正在paintComponent()方法中设置图标。您不应该在此方法中设置属性。 Swing组件足够聪明,可以在属性更改时重新绘制自己。在这种情况下,您会遇到组件重新绘制自身的问题,因为图标会发生变化,但是每次组件重新绘制自身时,您都会重新读取图标,这也不是很有效。 |
![]() |
Jörg · 如何更改多行JButton中的行距 8 月前 |
![]() |
Clive Galway · 将摆动元件包装在面板顶部 1 年前 |
![]() |
AlexHomeBrew · 如何将图像放在左上角的滚动窗格中 1 年前 |
![]() |
Vithor Roder · Java CellEditor 1 年前 |
![]() |
Dromlius · JPanel透支重叠的JComcoBox 1 年前 |