我想只有在Netbeans中选中一个复选框时才能使文本字段可编辑

时间:2012-03-08 02:24:42

标签: java swing mouseevent actionlistener itemlistener

我正在使用Netbeans,我希望它只有在用户单击复选框时才能编辑文本字段。我这样做,所以当他们选中复选框时,它会使文本字段可编辑,但如何取消选中复选框后文本字段再次变得不可编辑?

我用来使其可编辑的代码是 -

private void chk4By6MouseClicked(java.awt.event.MouseEvent evt) {
    txt4By6.setEditable(true);
}

3 个答案:

答案 0 :(得分:5)

使用ItemListener,以便您可以启用或停用JTextField,具体取决于JCheckBoxSELECTED还是DESELECTED

示例程序:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ModifyTextField 
{
    public static void createAndDisplayGUI()
    {
        JFrame frame = new JFrame("MODIFY TEXTFIELD");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationByPlatform(true);

        final JPanel contentPane = new JPanel();

        final JTextField tfield = new JTextField(10);
        tfield.setEnabled(false);

        final JCheckBox cbox = new JCheckBox("Enable TEXTFIELD", false);

        ItemListener itemListener = new ItemListener()
        {
            public void itemStateChanged(ItemEvent ie)
            {
                tfield.setEnabled(ie.getStateChange() == ItemEvent.SELECTED)
            }
        };
        cbox.addItemListener(itemListener);

        contentPane.add(cbox);
        contentPane.add(tfield);

        frame.getContentPane().add(contentPane);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndDisplayGUI();
            }
        });
    }
}

结果:

DESELECTEDSELECTED

答案 1 :(得分:1)

请参阅:http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

如果你真的想了解它的工作原理,请阅读整篇文章。

答案 2 :(得分:0)

您是否考虑过:

private void chk4By6MouseClicked(java.awt.event.MouseEvent evt) {
    txt4By6.setEditable(!txt4By6.isEditble());
}

或者甚至......(假设chk4By6是一个摆动复选框)

private void chk4By6MouseClicked(java.awt.event.MouseEvent evt) {
    txt4By6.setEditable(chk4By6.isSelected());
}

第三种方法可能是:

private void chk4By6ActionPerformed(ActionEvent evt) {
    txt4By6.setEditable(chk4By6.isSelected());
}