我正在使用Netbeans,我希望它只有在用户单击复选框时才能编辑文本字段。我这样做,所以当他们选中复选框时,它会使文本字段可编辑,但如何取消选中复选框后文本字段再次变得不可编辑?
我用来使其可编辑的代码是 -
private void chk4By6MouseClicked(java.awt.event.MouseEvent evt) {
txt4By6.setEditable(true);
}
答案 0 :(得分:5)
使用ItemListener,以便您可以启用或停用JTextField
,具体取决于JCheckBox
是SELECTED
还是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();
}
});
}
}
结果:
和
答案 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());
}