0

情報を送信するために JComboBox と JButton を作成しました。switch メソッドで情報を整理するには、情報を別のクラスに送信する必要があります。しかし、ActionListener 内で作成された文字列が別のクラスで認識されないようです。

public Main() {
    final JComboBox comboB = new JComboBox(b);          //add int b in here for array
    comboB.setBounds(50, 30, 123, 20);
    contentPane.add(comboB);

    JButton btnTest = new JButton("Test");
    btnTest.setBounds(300, 350, 89, 23);
    contentPane.add(btnTest);

    btnTest.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            String s = (String)comboB.getSelectedItem();
        }
    });
 }

String を他のクラスが認識できるようにするにはどうすればよいですか? ComboBox から選択されたものに応じてアクションを変更する別のクラスがありますが、この情報を取得できないようです。ありがとうございました。

4

3 に答える 3

1

java swing はMVC パターンを実装しているので、JComboBox のモデル参照を他のオブジェクトに渡すことができます。

モデルはオブザーバー パターンを実装しているため、モデルが変更されたときにすぐに通知を受ける必要がある場合は、他のオブジェクトを登録できます。

public class Main {
    public initializeComponent(OtherClass otherClass) {
        ...
        JComboBox comboBox = ...;
        ComboBoxModel comboBoxModel = comboBox.getModel();
        otherClass.setComboBoxModel(comboBoxModel);
    }
}

public class OtherClass {

    private ComboBoxModel comboBoxModel;

    public void setComboBoxModel(ComboBoxModel comboBoxModel) {
        this.comboBoxModel = comboBoxModel;
        ListDataListener listener = ...;
        comboBoxModel.addListDataListener(listener);
    }

    public String getSelectedItem(){
        Object selectedItem = comboBoxModel.getSelectedItem();
        ...
    }
}
于 2013-07-08T06:07:21.753 に答える