Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    java aggiornamento Jlabel

    salve ragazzi....
    ho un problema che non so proprio risolvere.....
    mi spiego ho una classe che si chiama EmailGrafica che contiene tutti i componenti dell'interfaccia grafica tra cui una label...

    poi ho un altra classe che si chiama emailreader che ha il compito di scaricare l'email...

    in questa ultima classe ci sono dei system.out.println.... per informarmi dell'esecuzione...
    io vorrei far stampare queste informazioni nella mai label in EmailGrafica come devo fare..

    esempio
    EmailGrafica contiene la jlabel

    mentre

    EmailReader
    codice:
    protected EmailGrafica eg ;
    
    	public  void Scarica()  {
    		try {
    			eg=new EmailGrafica();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    try {
    Properties props = System.getProperties();
    ..
    ...
    ...
    	
    	
    	
    ....
    
    
    	System.out.println("----------------------------------------------");
    	System.out.println(
    	"DA:" + from +
    	" OGGETTO: " + messaggio.getSubject() +
    	" DATA: " + messaggio.getSentDate() +
    	"\n"
    	);
    
    	stampaMessaggio( messaggio );
    	
    	//stampaParte(messaggio, indice);
    	
    	
    }
    System.out.println("from vale-------------------------"+from);
    }
    
    
    }
    
    ........
    
    
    
    System.out.println( "Folder non trovato" );
    }
    } else {
    System.out.println( "Folder di default non trovato" );
    }
    store.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    
    
    
    	
    
    .........
    ........
    ............
    
    System.out.println("Salvato il file " + filename );
    }
    
    }

    calcolate che è un ciclo for e quindi la label in EmailGrafica deve essere aggiornata continuamente fino alla fine del download ...
    come devo fare ...
    vi prego di farmi un esempio perchè adesso inizio a masticare un pochino java

    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    label.setText(myString);

    ...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    ho provato ma non cambia ... credo che ci vuole qualcosa che faccia aggiornare la label

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da Alex'87
    label.setText(myString);

    ...
    Originariamente inviato da Mircodj
    ho provato ma non cambia ... credo che ci vuole qualcosa che faccia aggiornare la label
    Esattamente..
    La tua JLabel forse si aggiorna alla fine del ciclo for...
    Se non ho imparato male da altri post di andbin e colleghi, ho capito che il controllo alla grafica tornerà alla fine del tuo ciclo for e questo non va bene per il risultato che vuoi ottenere.
    Dato che grafica e Thread vivono in simbiosi quello che ti posso consigliare è quello di creare un Thread a parte con il tuo ciclo, che richiama una funzione esterna al Thread stesso che imposta la tua JLabel ( per esempio il metodo della sezione grafica che gli passi come parametro quello che vuoi vedere ).
    In questo modo dovrebbe funzionare.
    Il motivo è perchè solamente alla fine del ciclo for tu potrai vedere l'ultimo set della tua classe ,in quanto l'aggiornamento grafico non è immediato.
    Qualora abbia castronato sarò lieto di ricevere correzione teoriche, ma se non ho capito male è così....
    Prova e facci sapere.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  5. #5
    è un giorno che ci provo ma proprio non ci riesco......
    ma come devo fare ? qualcuno può farmi un esempio per favore?

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da Mircodj
    è un giorno che ci provo ma proprio non ci riesco......
    ma come devo fare ? qualcuno può farmi un esempio per favore?
    Non ho capito cosa non riesci a fare...
    Cmq scrivo in pseudo codice :
    Si può richiedere il tag pseudo code?
    Codice PHP:
    ...
    ...
    new 
    Thread(){
        public 
    void run(){
           
    //inserisci tutto il codice del tuo ciclo for
           
    MioFrame.impostaJLabelstringDaImpostare );
        }
    }.
    start();
    ...
    ... 
    Questa è una inner class che puoi scrivere nel tuo codice, oppure istanzi una classe extends Thread che fa questa cosa.
    Cmq impostaJLabel( String messaggio ) è una funzione statica di tua creazione all'interno del tuo frame che richiami.
    Se non chiaro chiedi e se non funziona cerca di esser il più preciso possibile ( se eccezione postale ).
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  7. #7
    Diego grazie mille davvero ma proprio non ci riesco.... ti posto il codice se vuoi dacci un occhiata altrimenti non preoccuparti ...
    io mi sono arreso

    EmailGrafica
    classe che contiene tutti i componenti grafici bottoni liste label ecc
    contiene anche il codice del mio bottone scarica per scaricare le email che chiama il metodo scarica della classe EmailReader

    codice:
    final JButton btnDecodifica = new JButton();
    		btnDecodifica.setBounds(10, 319, 147, 99);
    		btnDecodifica.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.out.println(Thread.currentThread());
    				new Thread() { public void run() {
    					
    					er= new EmailReader();
    					try {
    						boolean connesso=reteConnessa();
    						if(connesso!= true){
    							JOptionPane.showMessageDialog(null, "Attenzione verificare connessione internet");
    						}else{
    							
    					Visibile();
    					er.Scarica();
    					allreferti=er.riempiVectorReferti();
    					listEmailRicevute.setListData(allreferti);
    					
    						}
    il tread si occupa della barra di download una semplice progress bar indeterminate

    poi sempre in questa classe EmailGrafica ho la mia label

    codice:
    ....
     label_Info = new JLabel();
    		label_Info.setText("New JLabel");
    		label_Info.setBounds(10, 25, 592, 14);
    		panelEmailRicevute.add(label_Info);

    adesso nella seconda classe EmailReader risiede il metodo scarica vero e proprio

    codice:
    protected EmailGrafica eg ;
    
    	public  void Scarica()  {
    		try {
    			eg=new EmailGrafica();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    try {
    Properties props = System.getProperties();
    Session session = Session.getDefaultInstance(props, null);
    pop3=eg.getConfPop();
    user=eg.getConfUser();
    pass=eg.getConfPass();
    Store store = session.getStore("pop3");
    store.connect(pop3, user, pass);
    
    Folder folder = store.getDefaultFolder();
    if (folder != null) {
    
    folder = folder.getFolder("INBOX");
    if (folder != null) {
    folder.open(Folder.READ_ONLY);
    
    Message[] elencoMessaggi = folder.getMessages();
    
    
    
    
    
    
    for (int indice = 0; indice < elencoMessaggi.length; indice++) {
    	
    	
    	
    Message messaggio = elencoMessaggi[ indice ];
    
    InternetAddress fromAddress = (InternetAddress)messaggio.getFrom()[0];
    String from = fromAddress.getPersonal();
    if( from == null  ) {
    from = fromAddress.toString();
    if(from.compareTo(eg.getConfDown())==0){
    
    
    	System.out.println("----------------------------------------------");
    	System.out.println(
    	"DA:" + from +
    	" OGGETTO: " + messaggio.getSubject() +
    	" DATA: " + messaggio.getSentDate() +
    	"\n"
    	);
    
    	stampaMessaggio( messaggio );
    	
    	//stampaParte(messaggio, indice);
    	
    	
    }
    eg.label_Info.setText("from vale-------------------------"+from);
    }
    
    
    }
    
    folder.close(false);
    } else {
    	System.out.println( "Folder non trovato" );
    }
    } else {
    System.out.println( "Folder di default non trovato" );
    }
    store.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    
    
    
    	
    
    static void stampaMessaggio( Message msg ) throws MessagingException, IOException {
    Part msgPart = msg;
    Object contenuto = msgPart.getContent();
    if( contenuto instanceof Multipart ) {
    Multipart mp = (Multipart)contenuto;
    
    for( int i=0; i<mp.getCount(); i++ ) {
    stampaParte( mp.getBodyPart(i), i );
    msg.setFlag(Flags.Flag.DELETED, true);
    }
    }
    }
    
    static void stampaParte( Part parte, int count ) throws MessagingException, IOException {
    String contentType = parte.getContentType();
    
    System.out.println( "Disposizione: " + parte.getDisposition() );
    System.out.println( "Testo: " );
    
    if( contentType.startsWith("text/plain") ) {
    
    InputStream in = parte.getInputStream();
    BufferedReader reader = new BufferedReader(
    new InputStreamReader( in )
    );
    
    do {
    String linea = reader.readLine();
    if( linea == null ) {
    break;
    }
    
    System.out.println( linea );
    } while( true );
    
    reader.close();
    in.close();
    
    } else {
    
    String filename = parte.getFileName();
    
    //if( filename == null ) {
    //filename = "allegato" + count + ".cod";
    //}
    FileOutputStream writer = new FileOutputStream("Email_Ricevute/"+filename );
    
    byte[] buffer = new byte[ 4096 ];
    InputStream in = parte.getInputStream();
    
    while( true ) {
    int readed = in.read( buffer );
    if( readed == -1 ) {
    break;
    }
    
    writer.write( buffer, 0, readed );
    }
    
    writer.close();
    in.close();
    
    System.out.println("Salvato il file " + filename );
    }
    
    }

    come vedi in questa classe ci sono molti System.out.println.....
    che stampano a video delle informazioni su ogni email che trovano nella casella di posta
    io vorre che questi informazioni vengano stampate continuamente nella label_Info in EmailGrafica

    cioè dovrei passare quel testo contenuto in system.out...
    e impostarlo alla label e aggiornare la label continuamente
    per farti capire il risultato che vorrei ottenere è simile a quella label che trovi quando istalli un qualsiasi programma che ti dice i file che sta istallando in modo velocissimo ele directori mentre scorre la progress bar d'istallazione...
    spero di essere stato chiaro.. grazie in anticipo per l'aiuto

  8. #8
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Ok, penso di aver capito.
    Volevo solamente chiederti, ma a te interessa mostrare una successione di dati ( stile appunto installazione con una contenitore centrale che mostra tutto quello che viene fatto ), oppure una label con un singolo spazio dove ogni volta il testo cambia ( stile avviamento eclipse, acrobat, ecc, dove nello splashscreen in basso compare un testo che cambia rapidamente, tipo Loading workspace... e simili )?

    Per il primo caso trasformare la tua JLabel in un JTextArea e poi ti basta fare textArea.append( String quello_che_vuoi_scrivere ), nel secondo rimaniamo sulla JLabel, anche se un JTExtField potrebbe andare benissimo.
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  9. #9
    ciao diego ho provato facendo questa modifica ma non va
    codice:
    	
        protected EmailGrafica eg ;
    
    	public  void Scarica()  {
    		try {
    			eg=new EmailGrafica();
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    try {
    Properties props = System.getProperties();
    Session session = Session.getDefaultInstance(props, null);
    pop3=eg.getConfPop();
    user=eg.getConfUser();
    pass=eg.getConfPass();
    Store store = session.getStore("pop3");
    store.connect(pop3, user, pass);
    
    Folder folder = store.getDefaultFolder();
    if (folder != null) {
    
    folder = folder.getFolder("INBOX");
    if (folder != null) {
    folder.open(Folder.READ_ONLY);
    
    Message[] elencoMessaggi = folder.getMessages();
    
    
    
    
    
    
    for (int indice = 0; indice < elencoMessaggi.length; indice++) {
    	
    	
    	
    Message messaggio = elencoMessaggi[ indice ];
    
    InternetAddress fromAddress = (InternetAddress)messaggio.getFrom()[0];
    String from = fromAddress.getPersonal();
    if( from == null  ) {
    from = fromAddress.toString();
    if(from.compareTo(eg.getConfDown())==0){
    
    
    	System.out.println("----------------------------------------------");
    	System.out.println(
    	"DA:" + from +
    	" OGGETTO: " + messaggio.getSubject() +
    	" DATA: " + messaggio.getSentDate() +
    	"\n"
    	);
    
    	stampaMessaggio( messaggio );
    	
    	//stampaParte(messaggio, indice);
    	
    	
    }
    String s= "";
    s=("from vale-------------------------"+from);
    eg.textAreaInfo.append(s);
    eg.textAreaInfo.setText(s);
    }
    
    
    }
    
    folder.close(false);
    } else {
    	System.out.println( "Folder non trovato" );
    }
    } else {
    System.out.println( "Folder di default non trovato" );
    }
    store.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    la parte modificata è (nella EmailReader)
    codice:
    String s= "";
    s=("from vale-------------------------"+from);
    eg.textAreaInfo.append(s);
    eg.textAreaInfo.setText(s);
    ma non succede nulla
    scusa ancora per il disturbo

  10. #10
    posto anche una prova che ho fatto ma non va
    vi prego aiutatemi

    classe Grafica formata da un bottone e un jtextfield
    codice:
    import java.awt.event.ActionEvent;
    
    
    public class Grafica extends JFrame {
    
    	public JTextField textField;
    	/**
    	 * Launch the application
    	 * @param args
    	 */
    	public static void main(String args[]) {
    		try {
    			Grafica frame = new Grafica();
    			frame.setVisible(true);
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * Create the frame
    	 */
    	public Grafica() {
    		super();
    		getContentPane().setLayout(null);
    		setBounds(100, 100, 500, 375);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		textField = new JTextField();
    		textField.setBounds(63, 53, 354, 20);
    		getContentPane().add(textField);
    
    		final JButton button = new JButton();
    		button.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				Testo t = new Testo();
    				t.start();
    			}
    		});
    		button.setText("New JButton");
    		button.setBounds(186, 185, 93, 23);
    		getContentPane().add(button);
    		//
    	}
    
    }
    classe testo che estende Thread semplicissima
    codice:
    import javax.swing.SwingWorker;
    
    
    public class Testo extends Thread{
    	protected Grafica g;
    	
    	public void run(){
    		
    		String s ="";
    		g=new Grafica();
    	       for(int i =0;  i< 100; i++){
    	    	   s= ""+"ab";	
    	    	   g.textField.setText(s);
    	    	   System.out.println(s);
    	    	   }
    	
    	}
    	
    }
    non succede nulla stampa a vide ma la jtextfild niente
    dove sbaglio
    questa è solo una prova

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.