1

JComboBoxを使用して特定の文字列を選択するプログラムのこの小さな部分があります。このコードをインターネットで見つけて試してみたところ、時間内に機能しましたが、選択した後で別の場所で文字列を再度呼び出そうとすると、nullに戻ります。コードは次のとおりです。

    private class courseAL implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        Start_round sr = new Start_round();
        JComboBox cb = (JComboBox)e.getSource();
        sr.CourseName = (String)cb.getSelectedItem();
        System.out.println(sr.CourseName);
    }
}

この状況ではゴルフコースの正しい名前が出力されますが、選択した後で別の場所でsr.CourseNameを再度呼び出そうとすると、nullが出力されます。ヘルプ。前もって感謝します。

4

1 に答える 1

1

ActionEventは、選択と選択解除の両方で渡されます。したがって、2番目のイベントは、新しいアイテムの選択が行われる前の1つのアイテムの選択解除です。ItemListenerを使用すると、イベントが選択であるか選択解除であるかを検出できます。

private class courseAL implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            Start_round sr = new Start_round();
            sr.CourseName = (String) e.getItem();
            // alternate:
            // JComboBox cb = (JComboBox) e.getItemSelectable();
            // sr.CourseName = (String) cb.getSelectedItem();
            System.out.println(sr.CourseName);
        }
    }
}
于 2012-06-07T02:10:14.790 に答える