1

像这样我可以从 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,但这给了我一个错误。那我该怎么做呢?

4

3 回答 3

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

}
于 2013-04-24T09:46:49.573 回答
1

您应该了解在 a 中选择某些内容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);
    // ...
}
于 2013-04-24T09:47:17.203 回答
0

我不确定您要实现什么,但似乎类成员变量和/或从您的匿名类调用类方法都可以解决问题。

public void actionPerformed(ActionEvent actionEvent)由于方法的返回类型为 void,因此您也不能返回 String 。

于 2013-04-24T09:45:08.410 回答