1

我想在文本字段中按下某些内容时停用组件,并在您擦除那里的所有内容并且它变为空时重新激活它们。但这似乎不起作用:

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);            
        }
    }
});
4

2 回答 2

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);
于 2013-10-29T10:26:07.993 回答
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

于 2013-10-29T11:08:57.850 回答