我有这个带有 BorderLayout 的“主”面板(我们称之为AAA)和两个面板(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 中输入一个数字并按“确定”时,面板CCC应填充适当数量的数据输入行。每行应包含两个文本字段、两个下拉列表和一个复选框。如果用户输入一些较大的数字,如果所有项目都在 JScrollPane 中,那就太好了。
我的问题:我应该如何在BBB中实现动作监听器?我不知道用户将输入什么数字。因此,我不知道CCC的 GridLayout 中的确切行数(我只知道它应该有 5 列)。我可以从BBB中的侦听器修改其布局吗?以及如何从面板BBB中的侦听器向面板CCC添加组件?
当然,如果您有更好的解决方案(没有两个单独的面板),请告诉我 :)