2013-04-24 8 views
1

Как это я могу вывести выбранное значение из ComboBox ..Get SelectedItem из 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); 
} 

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

+0

, как это не правильный путь, заканчивающийся в большинстве случаев с совершенно правильным предложением, но осложнено неправильное понятие все больше и больше, чтобы попытаться избежать того, чтобы , переместите любой графический интерфейс и его прослушиватель в общедоступные методы или пустоты, тогда все участники здесь не могут исправить или изменить это, потому что (реальная и) лучшая помощь скорее выведет [SSCCE] (http://sscce.org/), short, runnable, compilable – mKorbel

ответ

1

Вы должны понимать, что выбирая что-то в ComboBox является событие: обработчик события выполняется, когда происходит событие. Тем не менее, последние строки вашего примера выполняются при создании 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); 
    // ... 
} 
+0

Я хочу использовать имя в качестве параметра для вызова другой функции -> я отредактировал код, чтобы быть более ясным – mnewmedia

+0

@mnewmedia Я отредактировал мой ответ с примером –

0

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

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

1

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

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 

} 
Смежные вопросы