簡體   English   中英

如何根據 JCheckBox 的狀態啟用/禁用我的 JTextField?

[英]How can I enable/disable my JTextField depending of the state of a JCheckBox?

我在文本字段旁邊有一個 Java 復選框。

當復選框被選中時,我希望文本框被啟用,當它沒有被選中時,我不希望它被選中。 我用isSelected()方法嘗試了一個if語句,但它沒有做任何事情。

我如何對 JCheckBox 的狀態變化做出反應?

建議:

  1. 閱讀如何使用復選框教程
  2. JCheckBox實例注冊一個ItemListener
  3. 將狀態更改(即getStateChange() )與ItemEvent.SELECTEDItemEvent.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();
        }
    }
}

在此處輸入圖片說明

在此處輸入圖片說明

使用isSelected方法。

然后您使用ItemListener以便在選中或取消選中它時通知您。

並且根據 isSelected 方法的狀態,您可以啟用或禁用JTextBox

// >單擊復選框 > 添加事件處理程序 > 項目 > ItemStateChange > 輸入代碼

// chckBox1 是我的變量名

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

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

        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM