我正在尝试完全禁用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);
但没有任何效果。
答案 0 :(得分:5)
好吧,如果你不确切知道自己在做什么,我会建议你在你不想要任何东西出现的空间里有一个“填充面板”(只是一个你不做任何事情的JPanel)然后有其他的其他一切的面板。
所以说你有一个JFrame。如果你想让右上角永远不显示任何东西,你可以用4个JPanel填充JFrame,每个角落一个(或者左边有一个,右上角有一个,右下角有一个)。然后将所有摆动组件放在其他面板中。我不知道这是否会达到你的目的,但我不完全确定你的目的是什么,所以这是我能做到的最好的:)我希望它有所帮助!