我目前遇到的情况是,我需要为我的应用程序的用户提供一个对话框,其中有许多选项可供选择。 示例:
Object[] possibilities = {"ham", "spam", "yam"};
String s = (String)JOptionPane.showInputDialog(
frame,
"Complete the sentence:\n"
+ "\"Green eggs and...\"",
"Customized Dialog",
JOptionPane.PLAIN_MESSAGE,
icon,
possibilities,
"ham");
JOptionPane.showInputDialog 似乎可以做到这一点。然而,它似乎只能使用一个对象数组来选择选项,但在我的例子中,列表不是静态的,所以我不能定义一个数组,因为我有一个可变大小的 ArrayList。第二点是,当我调用它时,它不会返回我选择的索引,但我需要这个,因为我在后台有另一个复杂的列表,其中包含由所选选项的索引定义的值。 是否有可能以某种方式将动态列表推送到此对话框,或者是否有任何其他更优雅、更灵活的方式来做我需要的事情?
非常感谢。
最佳答案
您可以在 List
上使用 indexOf()
来根据 JOptionPane
返回的内容确定索引。下面的示例演示了这一点,并且可以扩展以使用更大的选项列表。
List<String> optionList = new ArrayList<String>();
optionList.add("Ham");
optionList.add("Eggs");
optionList.add("Bacon");
Object[] options = optionList.toArray();
Object value = JOptionPane.showInputDialog(null,
"Favorite Food",
"Food",
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]);
int index = optionList.indexOf(value);
关于java - 将 ArrayList 与 JOptionPane.showInputDialog 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363524/