2

ユーザーがコンボボックスで選択した項目を変更したときに、ボタンの状態(有効化/無効化)を更新するにはどうすればよいですか?

ボタンにはコンボボックスへの参照がありますが、コンボボックスはボタンについて何も知りません。

4

4 に答える 4

2

ボタンにコンボボックスへの参照がある場合、ボタンは、ボタンの状態を変更できるコンボボックスにアクションリスナーを登録できます。

final JButton button = new JButton();
final JComboBox comboBox = new JComboBox();

comboBox.addActionListener( new ActionListener() {
    @Override
    public void actionPerformed( final ActionEvent event ) {
        // Your logic to determine when to enable/disable:
        final boolean enabled = comboBox.getSelectedIndex() == 0;
        button.setEnabled( enabled );
    }
} );
于 2012-10-05T11:33:53.063 に答える
2

コンボボックスはボタンについて知る必要はありません。次のようなコンボボックスイベントにリスナーを追加する必要があります。

public class ComboBoxDemo ... implements ActionListener {
. . .
    petList.addActionListener(this) {
. . .
public void actionPerformed(ActionEvent e) {
    JComboBox cb = (JComboBox)e.getSource();
    String petName = (String)cb.getSelectedItem();
    yourButton.setEnabled(true/false);
}
. . .

}

于 2012-10-05T11:34:54.357 に答える
1

は、JButtonに独自のものを追加するだけActionListenerで、コンボボックスの選択した項目に応じての状態を変更できます。JComboBoxActionListenerJButton

于 2012-10-05T11:34:14.993 に答える
1

私は以前、ボタンの有効化または無効化がテキストフィールドへの入力とコンボボックスの項目の選択に依存するコードを作成しました。ここで役立つかもしれません。

jComboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                jComboBoxActionPerformed(e);
            }
        });
...
jTextField.getDocument().addDocumentListener(new DocumentListener() {
            public void insertUpdate(DocumentEvent e) {
                jTextFieldDocumentListener(e);
            }
            public void removeUpdate(DocumentEvent e) {
                jTextFieldDocumentListener(e);
            }
            public void changedUpdate(DocumentEvent e) {
                jTextFieldDocumentListener(e);
            }
        });
        jTextField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                jTextFieldActionPerformed(e);
            }
        });
...

private void jComboBoxActionPerformed(ActionEvent e){
        if(jComboBox.getSelectedIndex() == -1)
            jButton.setEnabled(false);
        else if(!jTextField.getText().equals(""))
            jButton.setEnabled(true);
    }
private void jTextFieldDocumentListener(DocumentEvent e){
        if(jTextField.getText().equals("") || jComboBox.getSelectedIndex() == -1){
            jButton.setEnabled(false);
        }
        else{
            jButton.setEnabled(true);
        }
    }

    private void jTextFieldActionPerformed(ActionEvent e){

        if(jTextField.getText().equals("")){
            jButton.setEnabled(false);
        }
        if(!(jTextField.getText().equals(""))){
            jButton.setEnabled(true);
        }
    }

コンボボックスが選択され、テキストフィールドが入力されると、ボタンが有効になります。それ以外の場合は有効になりません。

于 2015-05-05T18:57:45.050 に答える