我可以以非模态方式使用Java JOptionPane吗?
2022-09-03 14:50:58
我正在开发一个应用程序,当某个操作发生时,它会弹出一个JOptionPane。我只是想知道当JOptionPane弹出时,你怎么还能使用后台应用程序。目前,当JOptionPane弹出时,在我关闭JOptionPane之前,我无法执行任何其他操作。
编辑
感谢您的回复和信息。认为病态将此功能从应用程序中删除,因为它看起来可能比必要的更麻烦。
我正在开发一个应用程序,当某个操作发生时,它会弹出一个JOptionPane。我只是想知道当JOptionPane弹出时,你怎么还能使用后台应用程序。目前,当JOptionPane弹出时,在我关闭JOptionPane之前,我无法执行任何其他操作。
编辑
感谢您的回复和信息。认为病态将此功能从应用程序中删除,因为它看起来可能比必要的更麻烦。
该文档明确指出,通过 showXXXDialog 方法创建所有对话框时都是模式对话框。
您可以使用从文档中获取的直接使用方法和 JDialog 从 Dialog 继承的 setModal 方法:
JOptionPane pane = new JOptionPane(arguments);
// Configure via set methods
JDialog dialog = pane.createDialog(parentComponent, title);
// the line below is added to the example from the docs
dialog.setModal(false); // this says not to block background components
dialog.show();
Object selectedValue = pane.getValue();
if(selectedValue == null)
return CLOSED_OPTION;
//If there is not an array of option buttons:
if(options == null) {
if(selectedValue instanceof Integer)
return ((Integer)selectedValue).intValue();
return CLOSED_OPTION;
}
//If there is an array of option buttons:
for(int counter = 0, maxCounter = options.length;
counter < maxCounter; counter++) {
if(options[counter].equals(selectedValue))
return counter;
}
return CLOSED_OPTION;
在你的Java应用程序中,我认为你运气不好:我还没有检查,但我认为JOptionPane的showXXXDialog方法会弹出一个所谓的模式对话框,使来自同一JVM的GUI的其余部分保持非活动状态。
但是,Java没有任何抢占前台的超能力:您仍然应该能够将Alt-Tab添加到其他(非Java)应用程序中。