我想使用swing制作一个向导。我注意到JOptionPane就像向导一样工作,只有输入的数量和组织的方式是有限的。
有谁知道JOptionPane"等待"直到给出所需的输入并按下右键然后在结束时返回值?
是否有人知道如何使用JOptionPane以便可以创建向导的典型cardLayout?
答案 0 :(得分:5)
您可以向JOptionPane
添加任意内容,如图here所示。该内容可以是CardLayout
的面板,如here所示。给定JOptionPane.OK_CANCEL_OPTION
,JOptionPane
将等到单击任一按钮。如果结果为JOptionPane.OK_OPTION
,您可以根据需要检查卡片的内容。
答案 1 :(得分:4)
我认为你需要一个带有JDialog
的模态CardLayout
来交换向导的屏幕。当JDialog
不可见时,您可以从中获取状态并决定如何继续。
答案 2 :(得分:1)
“等待”是什么意思?在按下按钮之前阻止执行意味着“等待”吗?如果是这样,有很多解决方案,但最简单的解决方案之一就是:
while(block) {
Thread.sleep(500);
}
按下确定按钮后,对话框会设置block = false;
。有更复杂的解决方案,这只是一个例子。
如果你的意思是“等待”必须填写所有字段,你可以轻松地为每个字段实现一个监听器,以便在最后一个字段被编辑时启用OK按钮。
您可以查看JDialog
的源代码,例如here。我认为阻止部分是由超类show()
here中的方法Dialog
完成的。
我的提示:不要试图自己创建一个多页面向导,不要试图阻止任何事情等。这通常会导致更多问题。而是按照here这样的教程进行操作。它解释了如何使用Dialog作为向导的基础。