4

我在文本字段旁边有一个 Java 复选框。

当复选框被选中时,我希望启用文本框,如果不是,我不希望它被选中。我尝试了if使用该isSelected()方法的声明,但它没有做任何事情。

我如何对 JCheckBox 的状态变化做出反应?

4

3 回答 3

15

建议:

  1. 阅读如何使用复选框教程
  2. ItemListenerJCheckBox实例注册一个
  3. 比较状态变化(即getStateChange())与ItemEvent.SELECTEDItemEvent.DESELECTED,然后适当地调用foo.setEnabled,实例在foo哪里。JTextBox

这是一个SSCCE

public final class JCheckBoxDemo {
    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();             
            }
        });
    }

    private static void createAndShowGUI(){
        final JFrame frame = new JFrame("JCheckBox Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(JCheckAndTextPane.newInstance());
        frame.setSize(new Dimension(250, 75)); // for demonstration purposes only
        //frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private static final class JCheckAndTextPane extends JPanel{
        private JCheckAndTextPane(){
            super();

            // Create components
            final JTextField textField = new JTextField("Enabled");
            final JCheckBox checkBox = new JCheckBox("Enable", true);
            checkBox.addItemListener(new ItemListener(){
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if(e.getStateChange() == ItemEvent.SELECTED){
                        textField.setEnabled(true);
                        textField.setText("Enabled");
                    }
                    else if(e.getStateChange() == ItemEvent.DESELECTED){
                        textField.setEnabled(false);
                        textField.setText("Disabled");
                    }

                    validate();
                    repaint();
                }
            });

            add(checkBox);
            add(textField);
        }

        public static final JCheckAndTextPane newInstance(){
            return new JCheckAndTextPane();
        }
    }
}

在此处输入图像描述

在此处输入图像描述

于 2011-08-23T20:26:20.060 回答
2

使用isSelected方法。

然后,您使用 an ItemListener,以便在选中或取消选中时收到通知。

并且根据 isSelected 方法的状态,您可以启用或禁用JTextBox.

于 2011-08-23T20:19:41.353 回答
0

// >单击复选框 > 添加事件处理程序 > 项目 > ItemStateChange > 键入代码

// chckBox1 是我的变量名

    chckBox2.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {

            if(chckBox2.isSelected()) {
                txtAddCandles.setEnabled(true);
            }

        }
    });
于 2019-12-13T08:10:07.267 回答