0

我正在检查以下条件并显示对话框

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

我想在显示对话框并且条件为真时。进一步的执行应该停止在那里。如何做到这一点?

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 回答