2016-09-21 16 views
1

いくつかの入力フィールドでConfirmDialogを表示しています。保存に失敗すると(検証が失敗する)、私はMessageDialogボックスを表示したいが、ConfirmDialogボックスを消したくない。これはどうすればいいですか?以下はJOptionPane.showConfirmDialogボックスが閉じるのを防ぐ方法

(それはイベントハンドラだとして、私はこの方法でボタンをクリックしたとき)ConfirmDialogを開くために、私のactionPerformedメソッドです

@Override 
public void actionPerformed(ActionEvent e) { 

    int result = JOptionPane.showConfirmDialog(null, panel, "New transaction", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); 
    if (result == JOptionPane.OK_OPTION) { 

     // save transaction 
     Transaction transaction = new Transaction(); 

     // ... 

     if (transaction.save()) { 
      // close the ConfirmDialog is OK, save was successful 
     } else { 

      // don't close the ConfirmDialog, save failed 

      JOptionPane.showMessageDialog(panel, "Please fix the errors"); 
     } 
    } 
} 
+1

ダイアログ( 'result')の値は、それを閉じた後にのみ設定されるので、これは不可能です。あなたは 'Dialog'コンテナを使ってカスタムダイアログを使うことを検討すべきです。 – Mordechai

答えて

1

あなたは、ダイアログを作成するためのJOptionPaneクラスの静的メソッドを使用することはできません。

独自のダイアログを作成してから、JOptionPaneをダイアログのcontentPaneとして使用する必要があります。

Stopping Automatic Dialog ClosingのSwingチュートリアルのセクションを読んで、これを実行する方法のコード例を参照してください。

関連する問題