我正在尝试完全禁用 JFrame 的一部分上的所有绘画和刷新。public void paint(Graphics)
通过像这样简单地覆盖,我在整个 JFrame 上获得了预期的效果:
import javax.swing.*;
class Test extends JFrame {
Test () {
setBounds(20,20, 100,100);
setVisible(true);
}
//This disables all painting and refreshing ON A JFRAME.
//Just doing this on a JPanel doesn't work.
public void paint (Graphics g) {}
public static void main (String[] args)
{ new Test(); }
}
我想要同样的效果,但仅限于 JFrame 的特定区域。我希望能够像往常一样将 GUI 组件添加到框架的其余部分。我尝试禁用双缓冲(使用 JPanel 的构造函数)并覆盖以下方法(扩展 JPanel 和 JComponent),如下所示:
public class DontRefresh extends JComponent/JPanel {
public void paint (Graphics g) {}
public void paintComponent (Graphics g) {}
public void repaint () {}
public void update (Graphics g) {}
public void updateUI () {}
}
我还尝试通过以下方式禁用刷新:
DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);
但没有任何效果。