Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [Java]Esempio thread

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313

    [Java]Esempio thread

    Ho creato un finestra principale.
    Alle pressione del tasto.
    Vengono creati due thread,uno che mostra una jdialog ed una che esegue un 'operazione.
    Alla fine dell'operazione va a scrivere sullo stdout OK.
    All'interno della jdialog deve comparire una scritta.
    Il problema è quando visualizzo la jdialog la scritta non viene visualizzata ma viene visualizzato solo al termine dell'operazione perchè succede questo??

    codice:
    public class Ascoltatore implements ActionListener {
        private FinestraPrincipale fp;
    
        /**
         * @param args the command line arguments
         */
        
        public Ascoltatore(){
             fp = new FinestraPrincipale(this);
            
        }
        
        
        public final void istancePanelProgres(){
            PanelProgres pp = new PanelProgres(fp);
        }
        public final void istanceOperation(){
            Operazione o = new Operazione();
        }
        
        public static void main(String[] args) {
            // TODO code application logic here
            new Ascoltatore();
           
        }
    
        public void actionPerformed(ActionEvent e) {
            
           if(e.getActionCommand().equals("premi")){
               
               Thread t = new Thread(new Runnable(){
    
                    public void run() {
                      istancePanelProgres();  
                    }
                   
               });
               
              Thread t1 = new Thread(new Runnable(){
    
                    public void run() {
                      istanceOperation(); 
                    }
                   
               }); 
               
              t1.start();
              t.start();
                try {
                    t1.join();
                    System.out.println("Ok");
                } catch (InterruptedException ex) {
                    Logger.getLogger(Ascoltatore.class.getName()).log(Level.SEVERE, null, ex);
                }
               
           }
        }
    
    public class FinestraPrincipale extends JFrame{
       public FinestraPrincipale(Ascoltatore asc){
          this.setTitle("Example");
          this.setBounds(0, 0, 700, 700);
          JButton jbutton = new JButton("premi");
          jbutton.addActionListener(asc);
          this.add(BorderLayout.NORTH,jbutton);      
          this.setVisible(true);
       }
    }
    
    
    
    public class PanelProgres {
      public PanelProgres(JFrame frame){
          JDialog jdialog = new JDialog(frame,"jdialog",true);
          JPanel jpanel = new JPanel();
          jpanel.add(new JLabel("Waiting..Working in progres"));
          jdialog.getContentPane().add(jpanel);
          jdialog.setBounds(100, 100, 300, 100);
          jdialog.setVisible(true);
          
          
      }
    }
    
    public class Operazione {
        public Operazione(){
            for(int i = 0 ;i<10000;i++){
                System.out.println("Ciao");
            }
        }
        
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    313
    Come posso fare se non vorrei utilizzare im metodo join() per attendere un thread?

  3. #3
    scusa ma non ti conviene ridefinire una classe TuaDialog.java che estende la JDialog e ridefinire nel costruttore tutto il comportamento comrpeso la progress bar o richiamare il codice che hai già?

    se rendi una dialog modale questa attende che la dialog sia chiusa per continuare.

    ciao
    Ondare, il mio blog!

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.