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);
スレッド"main"の例外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)で