Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [java] Aggiornare JLabel

    ciao amicici

    ho una classe principale con un JFrame che visualizza una JLabel e un JButton.
    premendo il JButton eseguo un Thread che si trova in un'altra classe, che ogni secondo cambia il testo della JLabel.
    come faccio a passare il nuovo valore della JLabel al JFrame della classe principale??
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Quando il testo di una JLabel cambia viene sollevato un PropertyChangedEvent dalla JLabel. Per rilevare tale cambiamento è quindi sufficiente registrare il JFrame come un PropertyChangeListener della JLabel; se label è la tua JLabel e frame è il JFrame che deve ricevere la notifica:

    label.addPropertyChangeListener(frame);

    la classe di frame deve implementare l'interfaccia java.beans.PropertyChangeListener:

    Codice PHP:
    class MyFrame implements java.beans.PropertyChangeListener{

        public 
    void propertyChange(java.beans.PropertyChangeEvent evt){
               
    JLabel l = (JLabel)evt.getSource();
                   
    String s l.getText();
                   
    //ecc ecc...
        
    }


  3. #3
    non ho capito
    la JLabel si trova già nella classe del JFrame.
    io devo cambiare il suo contenuto da una classe esterna che mi serve da Thread e che ogni secondo mi crea una stringa da passare al JLabel (che si trova nella prima classe )
    spero di essermi spiegato bene
    grazie
    ciao
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ci sono due oportunità:

    1 passi al thread un riferimento alla JLabel

    2 (come ho fatto io in un mio programma): crei una classe che estende JLable e implementa runnable, con un metodo run che fa quelo che deve fare il thread. Poi attivi un thread passandogli come argomento la JLabel.

  5. #5
    come passo al thread il riferimento della JLabel??
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Definisci un costruttore per la classe che prende come argomanto la label

  7. #7
    non sono molto bravo in java puoi farmi un esempio??
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ma hai gia definito il thread che deve occuparsi di cambiare la label? se si, allora devi fare un costruttore che ha come argomento una jlabel:

    Codice PHP:
    class MyThread extends Thread{
        
    JLabel label null;
        
        public 
    MyThread(JLabel label ){
           
    this.label label;
         }

        public 
    void run(){
           
    //qui metti le istruzioni per cambiare la label
         
    }

    Quando crei il thread gli passi la label,


  9. #9
    perche ricevo questo errore quando provo a cambiare la JLabel??

    label.setText("nuovo testo");

    java.lang.NoSuchMethodError: Threadsecondario: method <init>(Ljava/lang/StringV not found
    at sleepwindows.spegni(sleepwindows.java:93)
    at sleepwindows.actionPerformed(sleepwindows.java:109 )
    at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1786)
    at javax.swing.AbstractButton$ForwardActionEvents.act ionPerformed(AbstractButton.java:1839)
    at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:245)
    at java.awt.Component.processMouseEvent(Component.jav a:5100)
    at java.awt.Component.processEvent(Component.java:489 7)
    at java.awt.Container.processEvent(Container.java:156 9)
    at java.awt.Component.dispatchEventImpl(Component.jav a:3615)
    at java.awt.Container.dispatchEventImpl(Container.jav a:1627)
    at java.awt.Component.dispatchEvent(Component.java:34 77)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:3483)
    at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:3198)
    at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:3128)
    at java.awt.Container.dispatchEventImpl(Container.jav a:1613)
    at java.awt.Window.dispatchEventImpl(Window.java:1606 )
    at java.awt.Component.dispatchEvent(Component.java:34 77)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)
    at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

  10. #10
    come non detto avevo dimenticato di passare la JLabel :quote:
    funziona
    grazie mille
    ....ma i computer non sono tanto macchine quanto strumenti di ampliamento della mente ed un diverso tipo di mezzo espressivo.
    -- Chi si accontenta non gode si illude --

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 © 2024 vBulletin Solutions, Inc. All rights reserved.