Получить SelectedItem из Combobox

Таким образом, я могу вывести выбранное значение из ComboBox..

public static String selectedString(ItemSelectable is) {
    Object selected[] = is.getSelectedObjects();
    return ((selected.length == 0) ? "null" : (String)selected[0]);
}

public static void main(String[] args) {
        // Add ActionListener
        ActionListener actionListener = new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                ItemSelectable is = (ItemSelectable)actionEvent.getSource();
                String name=selectedString(is);
                System.out.println(name);
            }
        };

        // Add Actionlistener to ComboBox kundeAuswahl
        kundeAuswahl.addActionListener(actionListener);

       // i wanna have the value of name for use here:
       // String test[] = getChildAsArray("kunde","projekt",name);
}

Но я хотел бы получить имя значения из этой функции, обычно я использую return, но это дает мне ошибку. Как мне это сделать?

3 ответа

Решение

Вы должны понимать, что выбор чего-то в ComboBox является событием: обработчик события выполняется, когда происходит событие. Однако последние строки вашего примера выполняются при создании поля со списком.

Следовательно name не доступен в то время. Однако вы можете вызвать любую понравившуюся вам функцию из обработчика событий:

public static void main(String[] args) {
    ActionListener actionListener = new ActionListener() {
        public void actionPerformed(ActionEvent actionEvent) {
            ItemSelectable is = (ItemSelectable)actionEvent.getSource();
            String name=selectedString(is);

            doSomethingWithName(name);
        }
    };

    // Add Actionlistener to ComboBox kundeAuswahl
    kundeAuswahl.addActionListener(actionListener);
}

public static void doSomethingWithName(String name) {
    String test[] = getChildAsArray("kunde","projekt",name);
    // ...
}

Используйте переменную класса.

  class Abc{


   String itemname

   ActionListener actionListener = new ActionListener() {
        public void actionPerformed(ActionEvent actionEvent) {
            ItemSelectable is = (ItemSelectable)actionEvent.getSource();
            String name=selectedString(is);
            itemname=name;
            System.out.println(name);
        }
    }
      // use itemname in class

}

Я не совсем уверен в том, чего вы пытаетесь достичь, но похоже, что и переменная-член класса, и / или вызов метода класса из вашего анонимного класса помогут.

Также вы не можете вернуть строку на public void actionPerformed(ActionEvent actionEvent) так как тип возвращаемого значения метода void.

Другие вопросы по тегам