使用带有JOptionPane.showInputDialog的ArrayList

时间:2013-03-12 14:09:53

标签: java swing joptionpane

我目前遇到的情况是我需要为我的应用程序的用户提供一个对话框,其中有许多选项可供选择。 例如:

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。第二点是当我调用它时它没有给我所选择的索引,但是我需要这个,因为我在后台有另一个复杂列表,其中包含由所选选项的索引定义的值。 是否有可能将动态列表推送到此对话框,还是有其他更优雅,更灵活的方式来完成我需要的工作?

提前多多感谢。

2 个答案:

答案 0 :(得分:4)

您可以在indexOf()上使用List根据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);

答案 1 :(得分:1)