我有一个主框架,该主框架具有一个数组列表,其中包含一个订单项的列表。然后,我有一个按钮,用于创建一个新窗口,该窗口的窗体允许用户为一个项目选择多个选项,然后将该信息放入对象中。
我想将此对象返回到原始帧,以便可以将其添加到订单数组列表中。但是我不确定该怎么做,因为当我使用netbeans时,框架会自动生成其代码。
答案 0 :(得分:0)
您应该使用侦听器(接口)系统。创建一个接口并在您的主框架中实现它,当您创建第二个框架时,您将第一个作为参数传递。通过这种方式,只要您愿意,就可以在第二帧中调用方法,例如onItemSelected。 使用接口更方便,可以有多个侦听器。
有一个例子:
class MyFrame extends JFrame implements ItemSelectedListener {
void onButtonClick() {
new SecondFrame(this);
}
@Override
public void onItemSelected(List<String> items) {
// do your stuff with the selected items here
}
}
interface ItemSelectedListener {
void onItemSelected(List<String> items);
}
class SecondFrame extends JFrame {
private ItemSelectedListener itemSelectedListener;
private JTextField name;
private JButton buttonOk;
SecondFrame(ItemSelectedListener listener) {
itemSelectedListener = listener;
name = new JTextField();
buttonOk = new JButton("OK");
getContentPane().add(name);
getContentPane().add(buttonOk);
buttonOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
List<String> myFormItems = new ArrayList<>();
// fulfill your list with all informations that you need
myFormItems.add(name.getText());
// notify your main frame that the user finished to complete the form
itemSelectedListener.onItemSelected(myFormItems);
}
});
}
}