我希望在文本字段内按下某些内容时停用组件,并在删除所有内容时重新激活它们并使其变空。但这似乎不起作用:
idTF.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (Character.charCount(ch)>0) {
searchF.setEditable(false);
rangeTF1.setEditable(false);
rangeTF2.setEditable(false);
ageTF.setEditable(false);
addressTF.setEditable(false);
crimebox.setEditable(false);
countrybox.setEditable(false);
genderbox.setEditable(false);
} else if (Character.charCount(ch)==0) {
searchF.setEditable(true);
rangeTF1.setEditable(true);
rangeTF2.setEditable(true);
ageTF.setEditable(true);
addressTF.setEditable(true);
crimebox.setEditable(true);
countrybox.setEditable(true);
genderbox.setEditable(true);
}
}
});
答案 0 :(得分:1)
您可以拥有DocumentListener
:
DocumentListener documentListener = new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent arg0) {
enableOrDisable(arg0);
}
@Override
public void insertUpdate(DocumentEvent arg0) {
enableOrDisable(arg0);
}
@Override
public void removeUpdate(DocumentEvent arg0) {
enableOrDisable(arg0);
}
private void enableOrDisable(arg0);(DocumentEvent arg0) {
//Code to enable/disable button
}
};
将此侦听器添加到您想要的字段中:
myComponent.getDocument().addDocumentListener(documentListener);
答案 1 :(得分:1)
修改了正确的代码:
class MyDocumentListener implements DocumentListener {
public void insertUpdate(DocumentEvent e) {
System.out.println(e.getType());
searchF.setEditable(false);
rangeTF1.setEditable(false);
rangeTF2.setEditable(false);
ageTF.setEditable(false);
addressTF.setEditable(false);
crimebox.setEnabled(false);
countrybox.setEnabled(false);
genderbox.setEnabled(false);
}
public void removeUpdate(DocumentEvent e) {
if(idTF.getText().isEmpty()){
searchF.setEditable(true);
rangeTF1.setEditable(true);
rangeTF2.setEditable(true);
ageTF.setEditable(true);
addressTF.setEditable(true);
crimebox.setEnabled(true);
countrybox.setEnabled(true);
genderbox.setEnabled(true);
}
}
public void changedUpdate(DocumentEvent e) {
}
}
谢谢@Maroun Maroun