我正在用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?!
谢谢
答案 0 :(得分:1)
尝试使用默认的BorderLayout而不是您现在使用的GroupLayout。只需注释掉以创建GroupLayout开头的行组并添加以下行:
getContentPane().add(jLayeredPane, BorderLayout.CENTER);
.add()方法的BorderLayout.CENTER参数告诉BorderLayout管理器您希望给定的窗口小部件填充窗口的中心。
答案 1 :(得分:1)
您可以将JLayeredPane与JFrame一起更改。 在(NetBeans IDE)设计模式下 - 右键单击JLayeredPane,然后在弹出菜单上将鼠标悬停在“自动调整大小”上,然后检查水平的verticaland。 这样,JLayeredPane的大小将相对于JFrame发生变化。