两个JFrame同时运行

时间:2012-10-04 05:25:24

标签: java swing class handler joptionpane

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

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

这是一个小例子/片段。

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;

希望我解释得很清楚。

不知道我是在考虑错误还是在做什么:|

2 个答案:

答案 0 :(得分:4)

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

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;
}

enter image description here

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

例如......

enter image description here

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;
}

答案 1 :(得分:2)

我想你问的是Modal对话框。查看this