4

テキストフィールドの横にJavaチェックボックスがあります。

チェックボックスがオンになっている場合はテキストボックスを有効にし、有効になっていない場合は選択しないようにします。ifメソッドを使用してステートメントを試しましたisSelected()が、何も実行されませんでした。

JCheckBoxの状態変化にどのように対応できますか?

4

3 に答える 3

15

提案:

  1. チェック ボックスの使用方法のチュートリアルを読む
  2. インスタンスItemListenerに を登録するJCheckBox
  3. getStateChange()状態変化 (つまり) をItemEvent.SELECTED、 またはと比較し、ItemEvent.DESELECTEDを適切に呼び出します。はインスタンスです。foo.setEnabledfooJTextBox

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ます。

次に、を使用して、ItemListenerチェックされているかチェックされていないかを通知します。

また、isSelectedメソッドの状態に応じて、を有効または無効にできますJTextBox

于 2011-08-23T20:19:41.353 に答える