4

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

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

提前非常感谢。

4

2 回答 2

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);
于 2013-03-12T14:44:01.570 回答
1
于 2013-03-12T14:14:27.177 回答