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

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 に答える
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 に答える
0

あなたが何を達成しようとしているのか正確にはわかりませんが、クラスメンバー変数および/または匿名クラスからのクラスメソッドの呼び出しの両方がうまくいくようです。

public void actionPerformed(ActionEvent actionEvent)また、メソッドの戻り値の型が void であるため、文字列を返すことはできません。

于 2013-04-24T09:45:08.410 に答える