所以我的问题是,如何做到这一点,以使主类不会在另一个类正在等待用户输入时运行。

也许我想的是错误的方式,所以请帮助我理清我的想法:)

这是一个小例子/片段。

Main Class正在运行一个JFrame,然后打开另一个JFrame询问用户输入
另一个JFrame在AddEditWindow类中。

AddEditWindow temp = new AddEditWindow();

info[counter+1] = temp.newEditedInfo;

infoArray.add(info[counter+1]);

因此,我要问的是,如何制作它,直到用户最终完成输入所有内容后,它才到达第二行代码。

AddEditWindow的ActionListener / Event处理程序仅用于按钮。

所以我在等待一个按钮被点击(以便初始化AddEditWindow类中的变量),然后让代码继续

info[counter+1] = temp.newEditedInfo;

希望我解释得足够好。

不知道我是在想错还是什么:|

最佳答案

为了简单起见,请尝试类似...

int result = JOptionPane.showConfirmDialog(null, "Can I ask you a question", "Quesion", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
switch (result) {
    case JOptionPane.YES_OPTION:
        //...
        break;
    case JOptionPane.NO_OPTION:
        //...
        break;
}




JOptionPane是一个非常强大的组件。如果提供组件而不是字符串,它将显示该组件...

例如...



JPanel panel = new JPanel(new GridLayout(0, 2));
panel.add(new JLabel("Name"));
panel.add(new JLabel("Last"));
panel.add(new JTextField("Jason"));
panel.add(new JTextField("Cardanas"));
panel.add(new JLabel("Phone"));
panel.add(new JLabel("Email"));
panel.add(new JTextField("333"));
panel.add(new JTextField("X"));
panel.add(new JLabel("PID"));
panel.add(new JLabel("Donation"));
panel.add(new JTextField("X"));
panel.add(new JTextField("0"));
panel.add(new JLabel("Membership"));
panel.add(new JLabel("Points"));
panel.add(new JTextField("false"));
panel.add(new JTextField("0"));

int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
switch (result) {
    case JOptionPane.OK_OPTION:
        //...
        break;
    case JOptionPane.CANCEL_OPTION:
        //...
        break;
}

07-27 13:46