2013-04-24 68 views
1

喜欢我可以输出从ComboBox选择的值..获取的SelectedItem的组合框

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/)简短,可运行,可编译 – mKorbel 2013-04-24 10:50:08

回答

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); 
    // ... 
} 
+0

我想用名称作为参数来调用另一个函数 - >我编辑的代码更清晰 – mnewmedia 2013-04-24 09:55:49

+0

@mnewmedia我用一个例子编辑了我的答案 – 2013-04-24 10:04:02

0

我不完全确定你正在努力达到的目标,但看起来像是一个类成员变量和/或从你的匿名类调用一个类方法都可以做到。

此外,由于该方法的返回类型为void,因此您不能返回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 

}