1

だから私の質問は、別のクラスがユーザーからの入力を待っている間にメインクラスが実行されないようにするにはどうすればよいかということです。

多分私はそれを間違った方法で考えているので、私の考えを整理するのを手伝ってください:)

ここに小さな例/スニペットがあります。

メイン クラスは JFrame を実行し、別の JFrame を開いてユーザーに入力を求めます。他の JFrame は AddEditWindow クラス内にあります。

AddEditWindow temp = new AddEditWindow();

info[counter+1] = temp.newEditedInfo;

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

私が求めているのは、ユーザーが最終的にすべての入力を完了するまでコードの 2 行目に到達しないようにするにはどうすればよいかということです。

AddEditWindow の ActionListener/Event ハンドラは、ボタン専用です。

だから私はボタンがクリックされるのを待っています(AddEditWindowクラス内の変数が初期化されるように)そしてコードが続くのを待っています

info[counter+1] = temp.newEditedInfo;

うまくいけば、私はそれを十分に説明しました。

私の考えが間違っているのか、それとも何なのかわからない :|

4

2 に答える 2

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

ここに画像の説明を入力してください

これ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;
}
于 2012-10-04T06:02:57.570 に答える
2

ダイアログについて質問していると思いますModalこれをチェック

于 2012-10-04T05:33:34.613 に答える