我目前正在开展一个项目,我必须在其中输入验证链接列表中的用户答案。在列表中有6到8个可能的答案。我正在考虑使用带有预定义选择的JOptionPane,但是如果我可以的话,我不太确定如何从链表中执行此操作?
我正在寻找一些关于如何做到这一点的帮助,甚至是关于我能做些什么的一些其他建议?关键是我需要能够验证用户输入,这就是为什么我要从预定义的选择中做到这一点。
这就是我在看的东西 http://www.java2s.com/Tutorial/Java/0240__Swing/UsingJOptionPanewithapredefinedselections.htm
正如我所说,我愿意接受任何其他建议,以便我能够做到这一点,欢迎任何建议。
:)
答案 0 :(得分:2)
您发布的示例似乎完全没问题。但是,它没有解释任何事情。
首先,核心方法是
public static Object showInputDialog(Component parentComponent,
Object message,
String title,
int messageType,
Icon icon,
Object[] selectionValues,
Object initialSelectionValue)
throws HeadlessException
您可以阅读API here。
所以,您基本上想要填写的内容是message
,title
,messageType
,selectionValues
以及initialSelectionValue
。
首先message
和title
做了很多解释,所以我不会为此烦恼。
messageType
参数表示消息对用户的显示方式。例如,如果您在此处使用JOptionPane.ERROR_MESSAGE
,则会显示该消息,因此系统可能会发出错误提示音。
可能的选项都包含在JOptionPane
中的常量。
现在,关键参数是selectionValues
,其类型为Object[]
。 API表示它是一组对象,可以提供可能的选择,因此基本上就是您目前在列表中所拥有的内容。您只需将其转换为Array
(在下面的示例中,我使用临时副本,这对6-8值完全没问题。)
最后但并非最不重要的是,initialSelectionValue
允许您指定最初应选择的值。
因此,您想要做的就像是
public Foo select(List<Foo> options, String message, String title, Foo initiallySelected) {
return (Foo)JOptionPane.showInputDialog(
null, // we don't have a parent component in this example
message, // the message that will appear above the selection
title, // the title that will appear in the window's caption
JOptionPane.QUESTION_MESSAGE, // style is question
null, // we don't show an Icon here, it's just a gimmick
list.toArray(), // the values which can be selected from
initiallySelected // the initially selected value
);
}