我正在使用Java编写应用程序并使用Netbeans IDE。我设置了两个JCheckBox
(chk1
和chk2
)和两个JTextField
(jtextfield1
和jtextfield2
)。我希望如果我选中chk1
,jtextfield2
将设置为不可编辑,如果我chk2
,jtextfield2
将设置为可编辑,反之亦然。
如何使用JCheckBox使JTextField可编辑,反之亦然?
使用下面的代码,它可以正常工作但如果我检查chk2
所有文本字段都设置为不可编辑。
private void ckDepoActionPerformed(java.awt.event.ActionEvent evt) {
if(ckDepo.isSelected()){
txtDeposit.setEditable(false);
}
else{
txtWithdraw.setEditable(true);
}
}
private void ckWithdrawActionPerformed(java.awt.event.ActionEvent evt) {
transact="withdraw";
if(ckWithdraw.isSelected()){
txtWithdraw.setEditable(false);
}
else{
txtDeposit.setEditable(true);
}
}
答案 0 :(得分:1)
建议:
例如:
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class RadioBtnMayhem {
private static final int COLUMNS = 10;
public static void main(String[] args) {
JPanel mainPanel = new JPanel(new GridLayout(0, 1));
ButtonGroup btnGroup = new ButtonGroup();
int fieldCount = 5;
for (int i = 0; i < fieldCount; i++) {
JRadioButton radioBtn = new JRadioButton();
btnGroup.add(radioBtn);
final JTextField textField = new JTextField(COLUMNS);
textField.setEnabled(false);
radioBtn.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
textField.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
}
});
JPanel radioFieldPanel = new JPanel();
radioFieldPanel.add(radioBtn);
radioFieldPanel.add(textField);
mainPanel.add(radioFieldPanel);
}
JOptionPane.showMessageDialog(null, mainPanel);
}
}