Java Swing - 如何在另一个面板上显示一个面板?

标签 java swing dialog jpanel z-index

我希望有一个内部(非窗口)对话框来询问成员输入。我希望将对话框集中放置在现有的 JPanel 上。

我看过 layeredpanes由于所有 Pane 中只有一个布局管理器(或没有布局管理器),这些似乎无法使用。我想我可以尝试覆盖 JLayeredPane 并提供自定义布局,但这似乎很极端。

Glass panes好像也不合适。

如何做到这一点? Swing 中没有可用的 z-index 概念吗?

编辑

分层 Pane 不合适的原因是由于缺少每层的布局管理器。面板可调整大小,面板 A 应保持在 100% 的区域,面板 B 应保持集中。

最佳答案

我认为 LayeredPane 是您最好的选择。您将需要第三个面板来包含 A 和 B。这第三个面板将是 layeredPane,然后面板 A 和 B 仍然可以有一个不错的 LayoutManagers。您所要做的就是将 B 置于 A 之上,在 Swing 路径中​​有很多关于如何做到这一点的示例。 Tutorial for positioning without a LayoutManager .

public class Main {
    private JFrame frame = new JFrame();
    private JLayeredPane lpane = new JLayeredPane();
    private JPanel panelBlue = new JPanel();
    private JPanel panelGreen = new JPanel();
    public Main()
    {
        frame.setPreferredSize(new Dimension(600, 400));
        frame.setLayout(new BorderLayout());
        frame.add(lpane, BorderLayout.CENTER);
        lpane.setBounds(0, 0, 600, 400);
        panelBlue.setBackground(Color.BLUE);
        panelBlue.setBounds(0, 0, 600, 400);
        panelBlue.setOpaque(true);
        panelGreen.setBackground(Color.GREEN);
        panelGreen.setBounds(200, 100, 100, 100);
        panelGreen.setOpaque(true);
        lpane.add(panelBlue, new Integer(0), 0);
        lpane.add(panelGreen, new Integer(1), 0);
        frame.pack();
        frame.setVisible(true);
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new Main();
    }

}

您可以使用 setBounds 将面板定位在分层 Pane 内并设置它们的大小。

编辑以反射(reflect)对原始帖子的更改 您将需要添加组件监听器,以检测何时调整父容器的大小,然后动态更改面板 A 和 B 的边界。

关于Java Swing - 如何在另一个面板上显示一个面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852631/

相关文章:

java - 如何将 Activity 引用传递给我自己的组件

java - 防止支持库的 Gradle 依赖被新版本覆盖

java - 返回数组中重复数的最小索引值

java - 在 JScrollPane 中使用 PaintComponent 绘图

java - 使图像遵循帧尺寸

java - 绘制、重绘、paintComponent

android - 关闭按钮一半在外面的自定义对话框

javascript - 如何在随机时间和随机消息对话框中显示弹出窗口?

java - 如何从核心项目登录

java - 关于 numerOfSelfLoops(Graph G) p.523 in Algorithms by Sedgewick and Wayne,