0

我正在尝试完全禁用 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);

但没有任何效果。

4

1 回答 1

5

好吧,在不确切知道您在做什么的情况下,我建议您在您不希望出现任何内容的空间中使用“填充面板”(只是您不做任何事情的 JPanel),然后为所有内容使用其他面板别的。

所以说你有一个JFrame。如果您希望右上角从不显示任何内容,您可以用 4 个 JPanel 填充 JFrame,每个角落一个(或 3 个,左侧一个,右上角一个,右下角一个)。然后将所有摆动组件放在其他面板中。我不知道这是否会达到你的目的,但我不完全确定你的目的是什么,所以这是我能做的最好的:)我希望它有所帮助!

于 2012-04-22T01:27:34.833 回答