0

以下の条件をチェックしてダイアログボックスを表示しています

if(query.contains(tab))
        {
        JOptionPane.showMessageDialog(null,"Owner does not have privileges to access given table");
        }

ダイアログボックスが表示され、条件がtrueの場合、それ以降の実行はそこで停止する必要があります。これを行うにはどうすればよいですか?

JOptionPaneはアプリケーションのパフォーマンスを低下させますか?私のアプリケーションはダイアログボックスを表示するのに時間がかかるからです。

編集:

  for(int i=0; i<ia.length; i++) 
      {

                tab=  ia[i].toString(); 
                    if(query.contains(tab))
                {
                    JOptionPane.showMessageDialog(null,"Owner does not have privileges to access given table");
                    break;
                }
        }
//rest code
4

2 に答える 2

2

@Robinの回答に対するあなたのコメントに基づいて:

ユーザーがダイアログを破棄するまで停止しますが、ダイアログボックスを閉じた後もそれ以上の実行を停止したい、つまり上記のifブロックの後にあるタスクの実行を停止したい。


編集された投稿を参照してください。残りのコード部分をブロックしたいのですが、他に追加するにはどうすればよいですか?

あなたの場合にできることは次のとおりです。フラグを取り、残りのコードを実行するかどうかを決定します。何かのようなもの:

boolean executeCode = true; // boolean flag to decide
for(int i=0; i<ia.length; i++)  {
   tab=  ia[i].toString(); 
   if(query.contains(tab)) {
      JOptionPane.showMessageDialog(null,
                   "Owner does not have privileges to access given table");
      executeCode= false; // do not want to execute the rest of code
      break;
   }
}
if (executeCode) {
   //rest code
}

私はあなたの問題をよく理解したかどうかは完全にはわかりませんが、上記のコメントから私が理解したことに基づいてこの回答を投稿しました。コメントでこれを説明するのも難しくなる可能性があります。私が間違っているか、正しく理解していない場合は通知してください。

于 2012-06-27T06:12:13.947 に答える
1

クラスのクラスjavadocで述べられているようにJOptionPane

すべてのダイアログはモーダルです。各showXxxDialogメソッドは、ユーザーの操作が完了するまで呼び出し元をブロックします。

したがって、ユーザーがダイアログを破棄するまで、それ以降の実行はそこで自動的に停止します。

また、を示すパフォーマンスの問題は発生していませんJOptionPane。パフォーマンスが低下するとどのように判断しましたか?

于 2012-06-27T05:41:32.353 に答える