Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    La JLabel non si aggiorna

    Domanda :
    Vorrei fare il modo che il valore inserito in una JTextField mi aggiorni automaticamente a video il valore di una JLabel secondo una determinata formula matematica. Ho pensato che forse devo implementare una classe Thread , ma in che modo?

    Avete suggerimenti e eventualmente codice-esempio da postarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: La JLabel non si aggiorna

    Originariamente inviato da Macgiglio
    Vorrei fare il modo che il valore inserito in una JTextField mi aggiorni automaticamente a video il valore di una JLabel secondo una determinata formula matematica. Ho pensato che forse devo implementare una classe Thread
    I thread non centrano nulla in questo caso.
    Vuoi fare "qualcosa" ogni volta che il contenuto del text field cambia? Registra un DocumentListener sul Document del JTextField. A seguito di uno degli eventi (vedi documentazione di DocumentListener), allora fai "qualcosa".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    Avevo fatto qualcosa del genere ma non funziona
    codice:
    jText = new JTextField();
    jText.addPropertyChangeListener(new PropertyChangeListener() {
    	public void propertyChange(PropertyChangeEvent e) {
    		UpdateValue uv = new UpdateValue();
    	             uv.update(Double.parseDouble(jText.getText()),N, jTxt2,jTxt3)	
    	 }
    	});
    implementando la classe UpdateValue in questo modo

    codice:
    import javax.swing.JTextField;
    
    
    public class UpdateValue {
    class StreamUpdateValue extends Thread
       {   private double s;
            private int N;
            private JTextField jTxt2;
            private JTextField jTxt3;	   
            public StreamUpdateValue (double s, int N,JTextField jTxt2, JTextField jTxt3){
    			   this.s = s;
    			   this.N=N;
    			   this.jTxt2 = jTxt2;
    			   this.jTxt3 = jTxt3;
    			   
    		   }
    	     
    	       public void run()
    	       {     
    	    	   jTxt2.setText(String.valueOf(s*(N*0.05))); 
    	    	   jTxt3.setText(String.valueOf(s*(N*0.1))); 
    	    	   
    	       }
    	}
          public void update( double in,int N, JTextField jTxt2, JTextField jTxt3){
                StreamUpdateValue SU = new  StreamUpdateValue (in ,N,jTxt2, jTxt3);
    		   SU.start();
    	   }	  
    }
    Come mai non funziona? dove sbaglio?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    Avevo fatto qualcosa del genere ma non funziona
    Un PropertyChangeListener riceve notifiche sul cambiamento di una "proprietà". Una proprietà è ad esempio il "font", il "foreground", il "background", ecc...
    Ma non il contenuto testuale del JTextField!!! Innanzitutto non è JTextField ad avere il testo .... è il Document associato al JTextField che lo gestisce. E Document gestisce appunto un DocumentListener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    mi potresti postare un po' di codice per capire un po' meglio? grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    mi potresti postare un po' di codice per capire un po' meglio? grazie
    codice:
    tuoTextField.getDocument().addDocumentListener(new DocumentListener() {
        public void insertUpdate(DocumentEvent e) {
            faiQualcosa();
        }
    
        public void removeUpdate(DocumentEvent e) {
            faiQualcosa();
        }
    
        public void changedUpdate(DocumentEvent e) {
            faiQualcosa();
        }
    }
    DocumentListener/DocumentEvent sono in javax.swing.event.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    Grazie.....risolto

  8. #8
    Salve scusate io ho un problema più semplice: vorrei aggiornare un JText durante un ciclo e ci riesco con:
    codice:
    JLabel testo = new JLabel();
    for( int i=0; ... ) ciclo( stringa[i] );
    
    public void ciclo( stringa ){
        test.setText(Stringa);
        test.update( test.getGraphics() );
    }
    Il problema è che ogni volta che cambia la stringa la nuova stringa viene scritta sopra quella veccia e dopo un paio di cicli non si riesce più a leggere quello che c'è scritto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.