3

のボタン モデルを設定できないのはなぜJCheckBoxですか?

次のコードは機能し、中央に 1 つのチェック ボックスがあるウィンドウを描画します。チェックボックスは操作可能です:

public class JCheckButton_Test {
public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            ButtonModel buttonModel = new DefaultButtonModel();

            JCheckBox checkBox = new JCheckBox();
            checkBox.setText("Check Box");
            //checkBox.setModel(buttonModel);

            JPanel controlPanel = new JPanel();
            controlPanel.add(checkBox);

            JFrame frame = new JFrame();

            frame.add(controlPanel, BorderLayout.CENTER);

            frame.pack();
            frame.setSize(640, 200);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });
}
}

しかし、モデルをボックスに追加すると (行のコメントを外す)、チェック ボックスは操作できなくなります (クリックしても変化しません)。

なんで?

4

2 に答える 2

4
// this is more than just a standard button..
ButtonModel buttonModel = new JToggleButton.ToggleButtonModel();
于 2013-02-20T18:10:47.183 に答える
2

これはボタンのデフォルトのボタンモデル実装であり、ボタンとしてのアクションに反応するためです。それでも使用したい場合はButtonModel、チェックボックスの動作を実装する必要があります。たとえば、次の実装を使用できます

......
 final ButtonModel buttonModel = new DefaultButtonModel();
 buttonModel.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        buttonModel.setSelected(!buttonModel.isSelected());
    }
 });
......
于 2013-02-20T18:26:42.570 に答える