nuj*_*uju 0 java swing paint jcomponent jpanel
我试图在JFrame的一部分上完全禁用所有绘画和刷新.通过简单地覆盖,我在整个JFrame上获得了预期的效果public void paint(Graphics):
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(); }
}
Run Code Online (Sandbox Code Playgroud)
我想要同样的效果,但只能在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 () {}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试通过以下方式禁用刷新:
DontRefresh component = new DontRefresh();
RepaintManager.currentManager(component).markCompletelyClean(component);
Run Code Online (Sandbox Code Playgroud)
但没有任何效果.
好吧,如果你不确切地知道自己在做什么,我会建议你在你不想要任何东西出现的空间里有一个"填充面板"(只是一个你不做任何事情的JPanel),然后让所有东西都有其他面板其他.
所以说你有一个JFrame.如果你想让右上角永远不显示任何东西,你可以用4个JPanel填充JFrame,每个角落一个(或者左边有一个,右上角有一个,右下角有一个).然后将所有摆动组件放在其他面板中.我不知道这是否会达到你的目的,但我不完全确定你的目的是什么,所以这是我能做的最好的:)我希望它有所帮助!
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |