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.