Java:JLayeredPane调整问题大小

时间:2011-02-28 10:05:53

标签: java user-interface jlayeredpane

我正在用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的大小没有改变。我使用了不同的backGround颜色作为组件,我很明显JLayered的大小是永久性的,但我将它设置为垂直和水平可调整其属性。 JFrame可以调整大小,但主要的jLayeredPane大小是permamnet。

如何让jLayeredPane重新调整为JFrame?!

谢谢

enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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