palestrato ha scritto:
allora io ho fatto così:
tipo.getDocument().addDocumentListener(new AscoltatoreDocumento(tipo,fine));
prezzo.getDocument().addDocumentListener(new AscoltatoreDocumento(prezzo,fine));
Il listener deve ricevere e tenersi
entrambi i campi
e il pulsante.
Come era prima:
new AscoltatoreDocumento(
tipo,prezzo,fine)
era sicuramente più sensato di come hai fatto adesso.
palestrato ha scritto:
non ho capito quella cosa che mi hai detto sul "non instanziarne due di classi "
Che non è necessario fare 2 new AscoltatoreDocumento( ....), ne basta solo uno, passato poi ai due addDocumentListener.
palestrato ha scritto:
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
if(campoditesto.getText()==""){
bottone.setEnabled(false);
}else{
bottone.setEnabled(true);
}
}
@Override
public void insertUpdate(DocumentEvent e) {
if(campoditesto.getText()==""){
bottone.setEnabled(false);
}else{
bottone.setEnabled(true);
}
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
if(campoditesto.getText()==""){
bottone.setEnabled(false);
}else{
bottone.setEnabled(true);
}
}
Innanzitutto il contenuto delle stringhe (degli oggetti in generale) si confronta con equals() ... NON con ==. Questa è una cosa super-ultra-basilare.
E come ho detto poco fa, servono entrambi i campi se vuoi che il pulsante si abiliti solo quando entrambi i campi non sono vuoti.
E ad ogni modo, la cosa logica sarebbe fare un piccolo metodo privato usato dai tre metodi ... non certo replicare il codice.