如何将带有 GroupLayout 的面板添加到 JFrame?还有许多其他面板。
我用FlowLayout
(btnPanel
数组)做了一些面板。GroupLayout
我用( )将它们添加到另一个面板btnPanel2
。垂直,一切都很好。
但是如何添加btnPanel2
到框架中?
public static String[][] NORMAL_BUTTONS = {
{"MC", "MR", "MS", "M+" ,"M-"},
{"<-", "CE", "C" , "+/-","√" },
{"7" , "8" , "9" , "/" ,"%" },
{"4" , "5" , "6" , "*" ,"1/x"},
{"1", "2", "3", "-","="},
{"0", ".", " ","+"}
};
Panel BtnPanel[]=new Panel[6];//(new FlowLayout());
BtnPanel[0]=new Panel();
BtnPanel[0].setLayout(new FlowLayout());
for(int i=0;i< NORMAL_BUTTONS.length;i++){
BtnPanel[i]=new Panel();
BtnPanel[i].setLayout(new FlowLayout());
for(int j=0;j<NORMAL_BUTTONS[i].length;j++)
{
Button btn = new Button(NORMAL_BUTTONS[i][j]);
// btn.setFont(BTN_FONT);
BtnPanel[i].add(btn);
}
}
JPanel BtnPanel2=new JPanel();
GroupLayout myl=new GroupLayout(BtnPanel2);
myl.setAutoCreateGaps(true);
myl.setAutoCreateContainerGaps(true);
myl.setVerticalGroup(myl.createSequentialGroup()
.addGroup(myl.createParallelGroup(GroupLayout.Alignment.BASELINE))
// THE FOLLOWING PANELS SHOULD HE VERTICALLY ALIGNED
// THE FOLLOWING PANELS SHOULD HE VERTICALLY ALIGNED
.addComponent(BtnPanel[0])
.addComponent(BtnPanel[1])
.addComponent(BtnPanel[2])
.addComponent(BtnPanel[3])
.addComponent(BtnPanel[4])
.addComponent(BtnPanel[5])
);
BtnPanel2.setLayout(myl);
导致问题的行如下
frame.add(BtnPanel2,BorderLayout.EAST);
线程“主”java.lang.IllegalStateException 中的异常:java.awt.Panel[panel0,0,0,0x0,invalid,layout=java.awt.FlowLayout] 未附加到水平组 在 javax.swing.GroupLayout.checkComponents(未知来源) 在 javax.swing.GroupLayout.prepare(未知来源) 在 javax.swing.GroupLayout.preferredLayoutSize(未知来源) 在 java.awt.Container.preferredSize(未知来源) 在 java.awt.Container.getPreferredSize(未知来源) 在 javax.swing.JComponent.getPreferredSize(未知来源) 在 java.awt.BorderLayout.preferredLayoutSize(未知来源) 在 java.awt.Container.preferredSize(未知来源) 在 java.awt.Container.getPreferredSize(未知来源) 在 javax.swing.JComponent.getPreferredSize(未知来源) 在 javax.swing.JRootPane$RootLayout.preferredLayoutSize(未知来源) 在 java.awt.Container.preferredSize(未知来源) 在 java.awt.Container.getPreferredSize(未知来源) 在 javax.swing.JComponent.getPreferredSize(未知来源) 在 java.awt.BorderLayout.preferredLayoutSize(未知来源) 在 java.awt.Container.preferredSize(未知来源) 在 java.awt.Container.getPreferredSize(未知来源) 在 java.awt.Window.pack(未知来源) 在 myPackage.Calc.createAndShowGui(Test.java:188) 在 myPackage.Test.main(Test.java:199)