Java 禁用JPanel上的绘制

Java 禁用JPanel上的绘制,java,swing,jpanel,paint,jcomponent,Java,Swing,Jpanel,Paint,Jcomponent,我正在尝试完全禁用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 refresh

我正在尝试完全禁用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),如下所示:

我还尝试通过以下方式禁用刷新:

DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);

但是什么都没用。

好吧,在不知道你在做什么的情况下,我建议你在你不希望任何东西出现的空间中设置一个“填充面板”(只是一个你不需要做任何事情的JPanel),然后为其他所有事情设置其他面板


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

好吧,在不确切知道你在做什么的情况下,我建议你在不希望任何东西出现的空间中设置一个“填充面板”(只是一个你不需要做任何事情的JPanel),然后为其他所有事情设置其他面板


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

你想要的效果不是很精确。你能告诉我们在你的不可绘画的JPanel中应该看到什么吗:它是透明的还是固定的颜色?在第一种情况下,只需将setOpaque设置为false,在后一种情况下,只需在背景上绘制所需的颜色。“我试图完全禁用JFrame部分的所有绘制和刷新功能。”您试图故意破坏GUI?这提供了什么功能?你想要的效果不是很精确。你能告诉我们在你的不可绘画的JPanel中应该看到什么吗:它是透明的还是固定的颜色?在第一种情况下,只需将setOpaque设置为false,在后一种情况下,只需在背景上绘制所需的颜色。“我试图完全禁用JFrame部分的所有绘制和刷新功能。”您试图故意破坏GUI?这提供了什么功能?我也不知道他在做什么,但我会投票支持你的努力!我也不知道他在做什么,但我会投票支持你的努力!
DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);