PDA

Visualizza la versione completa : [JAVA] Controllo modifiche del testo in un JTextField


Matteo982
03-12-2005, 14:14
Ho una JTextFiels e un JButton. Il Bottone inizialmente non è editabile e dovrei renderlo editabile solo quando viene scritto del testo nella JTextField (così come rimetterlo non editabile se il testo nella JTextField viene cancellato).
Per la TextField c'è un metodo apposito per controllare quando il contenuto cambia però io devo per forza usare una JTextField e non so come fare visto che lo stesso metodo non funziona!

Qualche idea in proposito? :confused:

Ciao. :ciauz:

Andrea1979
03-12-2005, 14:43
E' appena appena un po' più complessa:



import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class testoEBottone extends JFrame implements DocumentListener, ActionListener {

JTextField tf;
JButton button;

public void actionPerformed (ActionEvent ae) {
tf.setText("");
}

public void changedUpdate (DocumentEvent de) {
}

public void insertUpdate(DocumentEvent de) {
button.setEnabled(true);
button.setText("Attivato");
}

public void removeUpdate (DocumentEvent de) {
if (de.getDocument().getLength()==0) {
button.setEnabled(false);
button.setText("Disattivato");
}
}

public testoEBottone() {
super("Testo attiva");
this.getContentPane().setLayout(new GridLayout(2,1));
tf = new JTextField();
button = new JButton("Disattivato");
button.setEnabled(false);
button.addActionListener(this);
this.getContentPane().add(tf);
this.getContentPane().add(button);
tf.getDocument().addDocumentListener(this);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
this.pack();
}

public static void main (String[] args) {
testoEBottone teb = new testoEBottone();
}
}

Questo perché hanno pensato ad una gestione comune degli eventi sui textcomponent in swing (passando dalla creazione del document).

Matteo982
03-12-2005, 15:51
Avevo provato con il DocumentListener però mi diceva che non era associabile ad un JTextField...ma da quando ho visto dal codice che hai postato basta fare


tf.getDocument().addDocumentListener(this);

adesso provo! :dottò:

Ciao. :ciauz:

Matteo982
03-12-2005, 16:09
Grazie funziona benissimo ora! :zizi:

Ciao. :ciauz:

Loading