1

我正在用java编写程序GUI。我想拥有一个 JLayeredPane 作为我的 JFrame 的 ContentPane。在我的 JLayeredPane 上有两层:一层是 Canvas(canvas1),另一层是 JPanel(jPanel5)。我使用 Netbeans IDE 并生成以下代码:

    canvas1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    canvas1.setBounds(0, 0, -1, -1);
    jLayeredPane1.add(canvas1, javax.swing.JLayeredPane.PALETTE_LAYER);

    jPanel5.setBounds(0, 0, 670, 550);
    jLayeredPane1.add(jPanel5, javax.swing.JLayeredPane.DEFAULT_LAYER);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE)
    );

盒();

当我运行我的程序时,我看到了一个奇怪的事件!当我改变 tje JFrame 的大小时;主 JLayeredPane 的大小没有改变。我为组件使用了不同的背景颜色,对我来说很明显 JLayered 的大小是永久的,但是我在它的属性中将它设置为垂直和水平可调整大小。JFrame 是可调整大小的,但主 jLayeredPane 的大小是永久的。

如何使 jLayeredPane 调整为我的 JFrame 的大小?!

谢谢你

在此处输入图像描述

4

2 回答 2

1

您可以将 JLayeredPane 与 JFrame 一起更改。在(NetBeans IDE)设计模式下 - 右键单击​​ JLayeredPane,然后在弹出菜单上将鼠标悬停在“自动调整大小”上,然后检查垂直和水平。这样,JLayeredPane 的大小将相对于 JFrame 发生变化。

于 2011-06-15T12:15:07.580 回答
1

尝试使用默认的 BorderLayout 而不是您现在使用的 GroupLayout。只需注释掉以创建 GroupLayout 开头的那组行并添加以下行:

getContentPane().add(jLayeredPane, BorderLayout.CENTER);

.add() 方法的 BorderLayout.CENTER 参数告诉 BorderLayout 管理器您希望给定的小部件填充窗口的中心。

于 2011-02-28T10:23:13.417 回答