如何根据 JCheckBox 的状态启用/禁用 JTextField?

发布于 2024-12-01 13:25:54 字数 179 浏览 0 评论 0原文

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

当选中该复选框时,我希望启用该文本​​框,而当未选中该复选框时,我不希望它被选中。我尝试使用 isSelected() 方法使用 if 语句,但它没有执行任何操作。

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

I have a Java check box next to a text field.

When the check box gets selected, I want the text box to be enabled and when it isn't, I don't want it to be selected. I tried an if statement with the isSelected() method, but it didn't do anything.

How can I react to state changes of the JCheckBox?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冰之心 2024-12-08 13:25:54

建议:

  1. 阅读如何使用复选框教程
  2. 注册ItemListener对于JCheckBox 实例
  3. 比较状态更改(即getStateChange()) 到 ItemEvent.SELECTED< /a> 或 ItemEvent.DESELECTED,然后适当调用 foo.setEnabled,其中 fooJTextBox 实例。

这是一个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();
        }
    }
}

在此处输入图像描述

在此处输入图像描述

Suggestion:

  1. Read the How to Use Check Boxes tutorial
  2. Register an ItemListener for the JCheckBox instance
  3. Compare state change (i.e. getStateChange()) to either ItemEvent.SELECTED, or ItemEvent.DESELECTED, and then appropriately invoke foo.setEnabled, where foo is the JTextBox instance.

Here's an 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();
        }
    }
}

enter image description here

enter image description here

情归归情 2024-12-08 13:25:54

使用 isSelected< /code>方法。

然后,您使用 ItemListener 这样您就会在选中或取消选中时收到通知。

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

Use the isSelected method.

You then use an ItemListener so you'll be notified when it's checked or unchecked.

And depending on the state of the isSelected method, then you can enable or disable the JTextBox.

欲拥i 2024-12-08 13:25:54

// >单击复选框>添加事件处理程序>项目>项目状态改变>输入代码

// chckBox1 是我的变量名称

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

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

        }
    });

// >Click checkbox > Add Event handler > Item > ItemStateChange > Type the code

// chckBox1 is my Variable name

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

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

        }
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文