JOptionPane会降低应用程序性能



>我正在检查下面的条件并显示对话框

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

根据您对@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
}

我不完全确定我是否很好地理解了您的问题,但是我根据您上述评论中的理解发布了此答案,并且可能也很难在评论中解释这一点。如果我错了或没有正确理解,请通知我。

正如JOptionPane类的 javadoc 类中提到的:

所有对话框都是模式对话框。每个 showXxxDialog 方法都会阻止调用方,直到用户的交互完成。

因此,进一步的执行将自动停止,直到用户释放对话框。

而且我从未遇到过任何显示JOptionPane的性能问题。您如何确定它会降低您的性能?

最新更新