java - 将 ArrayList 与 JOptionPane.showInputDialog 一起使用

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

非常感谢。

最佳答案

您可以在 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/

相关文章:

java - 添加了新的 Pushpixal 主题,但没有变化

java - 当 JDialog 可见时执行 SQL 语句?

java - 使用 JOptionPane 生成随机数并对奇数和偶数进行排序

java - java 是否优化字符串文字 toLowerCase()?

java - 如何更新 2 个组合框

java - 这段代码中的LinkedHashSet可以换成HashSet吗?

java - 将一个 GUI 面板中的用户输入显示在另一个 GUI 面板上

java - JOptionPane showInputDialog 位置

java - 如何在java awt中的框架中添加按钮和面板

java - 在调用 super 构造函数之前检查变量的有效性