PDA

Visualizza la versione completa : [JAVA] swing JDialog && JTextField


userfra
15-11-2002, 11:08
Ciao a tutti, tramite una voce della JToolBar attivo una JDialog al cui interno ho una JTextField, una volta che inserisco un testo all'interno della JTextField, chiudo la JDialog, e la riapro vedo di nuovo il testo che ho inserito nella JTextField, perché?

Come posso fare?


ciao

lelefante
15-11-2002, 11:19
La JTextField memorizza il valore della Stringa che deve visualizzare, dato che tu utilizzi sempre la stessa JDialog (e quindi la stessa JTextFiled) il comportamento e' corretto. Per ovviare alla cosa potresti registrare un ascoltatore di eventi sulla JDialog, che al momento di chiusura di essa imposta il contenuto della JTextField con un stringa vuota.

userfra
15-11-2002, 11:26
Originariamente inviato da lelefante
Per ovviare alla cosa potresti registrare un ascoltatore di eventi sulla JDialog, che al momento di chiusura di essa imposta il contenuto della JTextField con un stringa vuota.

ah ho capito e come posso fare?

l.golinelli
15-11-2002, 12:53
Ma perche non usi JOptionPane invece che creare te una JDialog...

Cmq:

myDialog.addWindowListener(new WinClose());

public class WinClose implements WindowListener
{
public void windowActivated(WindowEvent e){}

public void windowClosed(WindowEvent e){}

public void windowClosing(WindowEvent e)
{
myTextField.setText("");
}
public void windowDeactivated(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

public void windowIconified(WindowEvent e){}

public void windowOpened(WindowEvent e){}
}


:p :p :p

l.golinelli
15-11-2002, 12:58
Dovresti poter fare anche così:

myDialog.addWindowAdapter(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
myTextField.setText("");
}
});

In questo modo puoi inserire solo l'evento che ti interessa senza dover mettere tutti gli eventi della Dialog per poi lasciarne vuoti più della metà...


:ciauz: :ciauz: :ciauz:

userfra
15-11-2002, 13:03
Originariamente inviato da l.golinelli
Dovresti poter fare anche così:

myDialog.addWindowAdapter(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
myTextField.setText("");
}
});

In questo modo puoi inserire solo l'evento che ti interessa senza dover mettere tutti gli eventi della Dialog per poi lasciarne vuoti più della metà...


:ciauz: :ciauz: :ciauz:


Mi da 1 errore:

Test.java:275: cannot resolve symbol
symbol : method addWindowAdapter (<anonymous java.awt.event.WindowAdapter>)
location: class javax.swing.JDialog
dialog.addWindowAdapter(new WindowAdapter()
^
1 error

Perché?

l.golinelli
15-11-2002, 13:11
Forse JDialog non supporta WindowAdapter...

Prova con addWindowListener

Importa java.awt.event.*; :tongue:

lelefante
15-11-2002, 13:11
Perche' il metodo da utilizzare non e' addWindowAdapter, ma addWindowListener, che accetta come parametro un oggetto WindowListener. L'oggetto WindowAdapter implementa l'interfaccia WindowListener, la tua classe anonima estende questo oggetto, e quindi la puoi passare come parametro nel metodo addWindowListener.

l.golinelli
15-11-2002, 13:13
Ah è vero!!!!:dhò: :dhò: :dhò:


myDialog.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
myTextField.setText("");
}
});


Ho pestato una Merda... :mad:

userfra
15-11-2002, 13:17
Originariamente inviato da l.golinelli
Forse JDialog non supporta WindowAdapter...

Prova con addWindowListener

Importa java.awt.event.*; :tongue:

e già e vero!

Loading