Получить 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.