Java 将ArrayList与JOptionPane.showInputDialog一起使用
我目前的情况是,我需要为我的应用程序的用户提供一个对话框,其中有许多选项可供选择。 例如:Java 将ArrayList与JOptionPane.showInputDialog一起使用,java,swing,joptionpane,Java,Swing,Joptionpane,我目前的情况是,我需要为我的应用程序的用户提供一个对话框,其中有许多选项可供选择。 例如: Object[] possibilities = {"ham", "spam", "yam"}; String s = (String)JOptionPane.showInputDialog( frame, "Complete the sentence:\n" + "\"Green eg
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。第二点是,当我调用它时,它不会返回所选索引,但我需要这样做,因为我在后台有另一个复杂的列表,其中包含由所选选项的索引定义的值。
是否有可能将动态列表推送到这个对话框中,或者是否有其他更优雅、更灵活的方法来完成我需要的任务
提前非常感谢。Object[]可能性={“ham”、“spam”、“yam”}对于
JComboBox
- 关于
列表上的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);
List optionList=new ArrayList();
选择列表。添加(“火腿”);
选择列表。添加(“鸡蛋”);
选择列表。添加(“培根”);
Object[]options=optionList.toArray();
对象值=JOptionPane.showInputDialog(null,
“最喜欢的食物”,
“食物”,
JOptionPane.QUESTION\u消息,
无效的
选项,
期权[0]);
int index=optionList.indexOf(值);
使用JComboBox构建自己的JDialog。通过这种方式,您可以使用ComboxModel控制JComboBox。感谢您的回复,我也在考虑使用JFrame之类的工具,但我不知道我可以用这种方式自定义JDialog。因此,有了JComboBox,我将能够提供一个动态的元素列表?是的。我建议使用ComboBoxModel。DefaultComboxModel可能会工作。好的,谢谢,但是当我创建自己的对话框时,我不确定如何通过单击按钮对相应的操作做出反应。我必须为这些按钮定义一些额外的侦听器吗?请参阅mKorbel答案中的Oracle教程。尝试一下,当你陷入困境时,再问另一个堆栈溢出问题。这实际上是我首先要搜索的,所以我会将回答标志授予它,尽管其他选项也很好。谢谢