2011-12-05 6 views
9

Quindi, come forse sapete, se avete un campo di testo e vi aggiungete un ActionListener, esso ascolterà solo la pressione del tasto Invio. Tuttavia, voglio lasciare che il mio ActionListener ascolti le modifiche nel testo del. Quindi, in pratica ho questo:Lascia che ActionListener ascolti la modifica in JTextField invece di inserire solo?

public static JPanel mainPanel() { 
    JPanel mainp = new JPanel(); 
    JTextArea areap = new JTextArea("Some text in the textarea"); 
    JTextField fieldp = new JTextField("Edit this"); 
    areap.setEditable(false); 
    fieldp.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      if(//change in textfield, for instance a letterpress or space bar) 
        { 
         //Do this 
        } 
     } 
    }); 
    mainp.add(areap); 
    mainp.add(fieldp); 
    return mainp; 
} 

Un modo per ascoltare i cambiamenti nel testo (come documentato nel caso actionPerformed)?

+1

possibile duplicato.! [altalena: Listener appropriato per gli eventi di modifica JTextField] (http://stackoverflow.com/ Que stions/2165071/swing -appropriato-listener-per-jtextfield-change-events) – duffymo

risposta

21

Da una risposta da @JRL


utilizzare il documento sottostante:

myTextField.getDocument().addDocumentListener(); 
+1

Che dire di PropertyChangeEvent? – joshreesjones

2

Sì, ma quello che è un ascoltatore documento e come si usa? Non stai davvero rispondendo alla domanda.

Ho un JTextField nell'interfaccia utente della mia app. Quando l'utente apporta modifiche, desidero controllare un JCheckBox vicino. Lo scopo è di dire all'app di USARE il valore inserito. Gli utenti spesso inseriscono un valore lì, ma se non dicono esplicitamente all'app di usarlo, l'app continua a ignorarlo. Invece di "allenare" gli utenti dovrei seguire il principio del minimo stupore e controllare automaticamente la casella "Usa questo valore".

Ma come posso ascoltare una modifica? Ragazzi, non potete semplicemente dirmi il modo semplice, invece di "educarmi" sugli ascoltatori di documenti?

+0

Quando ho posto questa domanda ho insinuato che sapevo come funzionava un ActionListener, quindi dovrei anche sapere come funziona (per capire come) un DocumentListener. La risposta è stata più che sufficiente. Aggiungi DocumentListener al documento di JTextField come menzionato, e puoi controllare i Javadoc dell'API per quale funzionalità ha quel listener specifico. – ZimZim

+0

forse si può avere un'idea da questo http://www.coderanch.com/t/610054/GUI/java/Add-DocumentListener-validate-multiple-JTextFields –

0

I documenti sono i meccanismi utilizzati da java swing per memorizzare il testo all'interno di un JTextField. DocumentListeners sono oggetti che implementano l'interfaccia di DocumentListener e consentono quindi di elencare le modifiche nel documento, cioè le modifiche nel testo di JTextField.

Per utilizzare le funzionalità document e documentlistener, come suggerito sopra, estendere la classe (probabilmente ma non necessariamente un JFrame) in modo che implementa l'interfaccia DocumentListener. Implementa tutti i metodi per l'interfaccia (molto probabilmente il tuo java ide può farlo in modo semi-automatico per te. FYI, l'interfaccia di DocumentListener ha tre metodi, uno per l'inserimento di caratteri (nel campo di testo), uno per rimuovere i caratteri e uno per cambiando gli attributi. Stai per voler implementare i primi due come vengono chiamati quando i caratteri vengono aggiunti (il primo) o cancellati (il secondo) .Per ottenere il testo modificato, puoi chiedere al documento il testo, o più semplicemente chiamare myTextField.getText()

c'est tout

Phil Troy

+0

Si prega di vedere prima questo: [risposta] (https: // stackoverflow.com/help/answering) e [how-to-answer] (https://stackoverflow.com/help/how-to-answer) –

Problemi correlati