この「メイン」パネル (これをAAAと呼びましょう) と BorderLayout があり、その中に 2 つのパネル ( BBBとCCC ) があります。
public class AAA extends JPanel {
BBB pnlNorth = new BBB();
CCC pnlCenter = new CCC();
public AAA(){
setLayout(new BorderLayout());
add(pnlNorth,BorderLayout.NORTH);
add(pnlCenter,BorderLayout.CENTER);
}
}
Panel CCCは現在空で、GridLayout があります。
私のパネルBBBは次のようになります。
public class BBB extends JPanel {
public BBB (){
JLabel labNum = new JLabel("Number of items: ");
JTextField txtNum = new JTextField();
JButton cmdOK = new JButton("OK");
txtNum.setColumns(5);
cmdOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
/* ???????????? */
}
});
add(labNum);
add(txtNum);
add(cmdOK);
}
}
ユーザーが txtNum に数値を入力して「OK」を押すと、パネルCCCにデータ入力用の適切な行数が表示されます。各行には、2 つのテキスト フィールド、2 つのドロップダウン リスト、およびチェックボックスが含まれている必要があります。ユーザーが大きな数値を入力した場合、すべての項目が JScrollPane にあると便利です。
私の質問: BBBでアクション リスナーを実装するにはどうすればよいですか? ユーザーが入力する番号はわかりません。したがって、 CCCの GridLayoutの正確な行数はわかりません(5 列にする必要があることだけはわかっています)。BBBのリスナーからレイアウトを変更できますか? また、パネルBBBのリスナーからパネルCCCにコンポーネントを追加するにはどうすればよいですか?
もちろん、(2 つの別々のパネルなしで) より良い解決策がある場合は、お知らせください:)