从Combobox获取SelectedItem

时间:2013-04-24 09:38:43

标签: java swing awt actionlistener jcombobox

像这样我可以从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);
}

但我想从这个函数中获取Value name ,通常我使用return,但是这给了我一个错误。那么我该如何做呢?

3 个答案:

答案 0 :(得分: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

}

答案 1 :(得分:1)

您应该了解在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);
    // ...
}

答案 2 :(得分:0)

我不确定你想要实现什么,但似乎既是一个类成员变量又是/或者从你的匿名类调用一个类方法就可以了。

此外,由于方法的返回类型为void,因此无法在public void actionPerformed(ActionEvent actionEvent)上返回字符串。