Visualizzazione dei risultati da 1 a 5 su 5

Discussione: JFrame e Thread

  1. #1

    JFrame e Thread

    Salve,
    ho il seguente codice che inizialmente avvia una finestra JFrame e successivamente un thread.

    Obiettivo: Visualizzare finestra con scritto "Ciao" in contemporanea al thread
    Problema: la finestra JFRAME è vuota nonostante il thread viene eseguito correttamente.

    codice:
    JFrame frame = new JFrame();
    			
    			frame.setTitle("Finestra");
    			frame.setPreferredSize(new Dimension(300, 100));
    			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			
    			JPanel panel = new JPanel(new GridLayout(2,1));
    			frame.add(panel);
    			panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    			
    			panel.add(new JLabel("Ciao"));
    		    
    			panel.pack();
    			frame.setVisible(true);
    		
                            Download download = new Download();
    			Thread t1 = new Thread(download);
    			
    			t1.start();
    			
    			while (true){
    				richiama una classe
    				try {
    					t1.sleep(3000);
                                            System.out.println("stampa test");
    				}
    				
    				catch (InterruptedException e){
    				}
    			}
    Qual'è il problema?

    Grazie

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

    Re: JFrame e Thread

    Originariamente inviato da internet.forum.
    Salve,
    ho il seguente codice che inizialmente avvia una finestra JFrame e successivamente un thread.

    Obiettivo: Visualizzare finestra con scritto "Ciao" in contemporanea al thread
    Problema: la finestra JFRAME è vuota nonostante il thread viene eseguito correttamente.

    Qual'è il problema?
    Il pezzo di codice che hai postato in quale contesto è eseguito? Forse nel contesto del EDT (Event Dispatch Thread)? Se così, allora vuol dire che con quel loop continuo (non vedo uscite esplicite) e con la sleep tu stai tenendo impegnato il EDT, che quindi non può far altro (la tua interfaccia utente è "congelata").

    Se è come ho detto, chiarisciti prima le questioni sul "threading" in Swing, perché è una cosa fondamentale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    quel ciclo while è finito, in pratica termina al termine di un download.

    Pero' la cosa strana è che i vari JLabel (scritta "ciao") della finestra JFrame, li visualizzo solo dopo che il while termina.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da internet.forum.
    quel ciclo while è finito, in pratica termina al termine di un download.
    Nel codice postato non si vede una uscita "esplicita" da quel while ma se dici che una uscita c'è, ok.

    Originariamente inviato da internet.forum.
    Pero' la cosa strana è che i vari JLabel (scritta "ciao") della finestra JFrame, li visualizzo solo dopo che il while termina.
    Ripeto: quelle inizializzazioni e quel while di seguito sono eseguite nel contesto del EDT? Se è così, in quel frangente tutta la interfaccia utente è "congelata".

    Lesson: Concurrency in Swing
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Originariamente inviato da andbin
    Nel codice postato non si vede una uscita "esplicita" da quel while ma se dici che una uscita c'è, ok.
    Si, l'uscita c'è, non l'ho scritta perchè è un po' lunga.

    Ripeto: quelle inizializzazioni e quel while di seguito sono eseguite nel contesto del EDT? Se è così, in quel frangente tutta la interfaccia utente è "congelata".
    Se Per EDT intendi il file dove viene aperto il thread allora si.

    Quindi come dovrei risolvere?

    Comunque la cosa strana è che la finestra viene avviata, solo che è vuota, poi all'interruzione del while visualizzo i dettagli.

    Grazie mille

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.