Java重绘隐藏其他面板

时间:2014-08-22 08:05:26

标签: java swing layout-manager null-layout-manager

我有3个Jpanel嵌套如下:

main JPanel
{
  second JPanel {}
  3rd JPanel {}
  main method
}

这是我在“主面板”中添加的顺序:

    add(thirdPanel);
    add(secondPanel);
    setComponentZOrder(componentsPanel, 0);
    setComponentZOrder(panel, 1);

第二个和第三个面板都有paintComponent个方法,最初包含GUI组件的第三个面板(如buttons等)位于第二个面板的顶部(这就是我想要的)但每当我绘制时或者在第二个面板中repaint,第三个面板中的所有组件都隐藏在第二个面板下面。这就像secondPanel正在优先考虑。我基本上希望第三个面板无论如何都能保持领先。

注意:我使用的是null布局管理器。

1 个答案:

答案 0 :(得分:2)

覆盖父面板的isOptimizedDrawingEnabled方法并让其返回false

@Override
public boolean isOptimizedDrawingEnabled() {
    return false;
}

如果某个组件的子项重叠,则必须执行此操作,否则Swing将无法正确绘制它们。