我目前遇到的情况是我需要为我的应用程序的用户提供一个对话框,其中有许多选项可供选择。 例如:
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。第二点是当我调用它时它没有给我所选择的索引,但是我需要这个,因为我在后台有另一个复杂列表,其中包含由所选选项的索引定义的值。 是否有可能将动态列表推送到此对话框,还是有其他更优雅,更灵活的方式来完成我需要的工作?
提前多多感谢。
答案 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)
Object[] possibilities = {"ham", "spam", "yam"};
应Items
JComboBox
for similair issue to see Oracle tutorial关于How to Make Dialogs