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があるため、配列を定義できません。2番目のポイントは、呼び出したときに選択したインデックスが返されないことですが、選択したオプションのインデックスによって定義された値を含む別の複雑なリストがバックグラウンドにあるため、これが必要です。動的リストをこのダイアログにプッシュすることはどういうわけか可能ですか、それとも私が必要とすることを行うための他のよりエレガントで柔軟な方法がありますか?

よろしくお願いします。

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 に答える