
Originariamente inviata da
desiderio
Praticamoento quello che vorrei è realizzare è un programma dove su 5 JTextField, una volta premuto il tasto invio, mi stampasse tutto ciò che ho scritto su un altro JTextField di nome che già conosciamo textSTAMPA.
Ok, e deduco che non conta su quale textfield è stato premuto invio. Cioè, detto in altro modo, la "azione" da fare è la stessa indipendentemente da quale textfield ha ricevuto il invio.
In tal caso non è difficile. Usando le inner class ci sono diverse soluzioni per implementare il ActionListener:
Soluzione 1)
Per ciascun textfield registri un ActionListener implementato con inner class "anonima", creata e passata come argomento del addActionListener per ciascun textfield. Nel actionPerformed, per evitare duplicazioni, invochi un metodo (possibilmente privato) della tua classe.
codice:
textField1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
eseguiAzione();
}
});
textField2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
eseguiAzione();
}
});
textField3.addActionListener( ......idem...... );
textField4.addActionListener( ......idem...... );
textField5.addActionListener( ......idem...... );
Soluzione 2)
Invece di creare una inner class "anonima" passata "al volo" per ciascun addActionListener ne crei una sola e la assegni ad una variabile, che poi passi a tutti gli addActionListener.
codice:
ActionListener azioneListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// puoi invocare un metodo privato della tua classe principale (se è lungo)
// oppure fare tutto qui dentro.
}
};
textField1.addActionListener(azioneListener);
textField2.addActionListener(azioneListener);
textField3.addActionListener(azioneListener);
textField4.addActionListener(azioneListener);
textField5.addActionListener(azioneListener);
Soluzione 3)
Invece che implementare il listener come inner class "anonima", lo implementi in una inner class "regular" che è nient'altro che una classe che è "membro" della classe principale.
codice:
public class TuaClassePrincipale {
// .....
public TuaClassePrincipale() {
// ....
AzioneListener azioneListener = new AzioneListener();
textField1.addActionListener(azioneListener);
textField2.addActionListener(azioneListener);
textField3.addActionListener(azioneListener);
textField4.addActionListener(azioneListener);
textField5.addActionListener(azioneListener);
}
private class AzioneListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// puoi invocare un metodo privato della tua classe principale (se è lungo)
// oppure fare tutto qui dentro.
}
}
}
Ci sono anche altre soluzioni, come implementare ActionListener direttamente in quella che è la TuaClassePrincipale. Personalmente non mi piace molto perché "espone" il fatto che la classe implementa il listener.
Come vedi ci sono svariate soluzioni. Il "bello" è che i listener sono INTERFACCE e le puoi implementare in vari modi e a vari livelli sfruttando anche e soprattutto le inner class.
NOTA: evita la soluzione 1) perché è uno spreco di classi anonime. 

Originariamente inviata da
desiderio
Sucessivamente alla pressione di un JButton di nome "Save", mi salvi il contenuto. (come stringa) del JTextField "textSTAMPA" su un .doc. Nello stesso .doc possano essere salvate altre stringhe, ripartendo col processo, una sotto l'altra.
Ok, tieni presente che ".doc" non vuol dire in questo caso un documento di "Office" ma solamente un testo "puro" e basta.

Originariamente inviata da
desiderio
Mentre questo è per salvare una stringa sul file "scrittura.doc", ma ho commesso errori anche qui, come posso fare?
Manca sicuramente il close(), che va sempre fatto (tra l'altro anche se un write dovesse lanciare una eccezione!!).

Originariamente inviata da
desiderio
P.S. il "<br>" per andare a capo non funziona.
In che senso? Dove?
<br> presuppone HTML e quindi presuppone che un documento .htm o .html venga "aperto" o con un browser (Firefox, IE, ecc...) o con un altro applicativo/editor che legge HTML oppure usato in un componente (es. Swing di Java) che ha il supporto per HTML.