Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    dvx80
    Guest

    [JAVA] JProgressBar e GUI

    Salve a tutti.

    Allora ho un JFrame dal quale in questo modo chiamo un altro JFrame in questo modo:

    codice:
    Select s;
    if(bustaCB.isSelected())
       s=new Select(azienda,utente,connection,directoryDiLavoro,sql,"Buste Complete");
    else if(librettoCB.isSelected())
       s=new Select(azienda,utente,connection,directoryDiLavoro,sql,"Solo Libretti");
    else if(etichettaCB.isSelected())
       s=new Select(azienda,utente,connection,directoryDiLavoro,sql,"Solo Etichette");
    else if(cartellinoCB.isSelected())
       s=new Select(azienda,utente,connection,directoryDiLavoro,sql,"Solo Cartellino");
    il costruttore della classe è questo.

    codice:
          public Select(String azienda,String utente,Connection connection,String directoryDiLavoro, String sql, String tipo){
    		super("Elaborazione in corso. Attendere......");
    		
    		this.azienda=azienda;
    		this.connection=connection;
    		this.directoryDiLavoro=directoryDiLavoro;
    
    		setIconImage(Toolkit.getDefaultToolkit().getImage("Icone\\Olis.jpg"));
    		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    	
    		setLocation(Toolkit.getDefaultToolkit().getScreenSize().height/3,Toolkit.getDefaultToolkit().getScreenSize().width/4);
    		setSize(450,80);
    		
    		JPanel jp=new JPanel(new GridLayout(2,1));
    		
    		pb=new JProgressBar(0,300);
    		
    		pb.setStringPainted(true);
    		pb.setBorderPainted(true);
    		
    		JPanel jpb=new JPanel(new GridLayout(1,3));
    
    		JButton ok=new JButton("OK",new ImageIcon(Toolkit.getDefaultToolkit().getImage("Icone\\ok.jpg")));
    		ok.setFont(new Font("SanSerif",Font.BOLD,12));
    		ok.setEnabled(false);
    		ok.addActionListener(this);		
    		
    		jpb.add(new JPanel());		
    		jpb.add(ok);
    		jpb.add(new JPanel());
    		
    		jp.add(pb);
    		jp.add(jpb);
    		
    		setContentPane(jp);
    		invalidate();
    		validate();
    		setVisible(true);
    		
    		show();
    
    		steep(sql,tipo);
    		
    		ok.setEnabled(true);
    		
    	}
    nel metodo steep poi faccio avanzare la mia JProgressBar. Questo in teoria xchè non funziona.
    Cioè la finestra viene creata ma non viene visualizzato niente nemmeno il titolo, finche non finisce il metodo steep() a quel punto la la finestra appare conpleta è con la progressbar al 100%.
    Purtroppo cosi è inutile. Penso che sia un problema dovuto al refresh della finestra o a qualcosa del genere xchè se lancio la classe da un main tutto và bene ma quando la lancio da un frame tutto si blocca.

    Spero di essere stato abbastanza chiaro (anche se ne dubito....).
    Spero che qualcuno di voi mi sappia illuminare xchè sinceramente da solo non ne venego proprio fuori.....

    Grazie in anticipo a tutti ....

  2. #2
    Penso tu possa risoverlo utilizzando i Thread .
    Puoi usare due thread , uno per steep e uno per la creazione della finestra , in questo modo lavorano in "parallelo".
    Almeno avevo risolto così per una JProgressBar associata al caricamento di un file

    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    dvx80
    Guest
    Ci avevo gia pensato a questo ma non essendo in grado di usarli avevo preferitobattere altre strade....

    Allora ho fatto tutto con i 3d ma il problema resta. Mi fa lo stesso identico scherzo. Mi compare la finestra ma come nell'altro caso è grigia senza niente. Quando finisce il metodo steep allora la finestra e la barra compaiono in tutto il loro splendore.....

    Ma che due OO sta storia......

  4. #4
    dvx80
    Guest
    Miticuzzolo ci sono riuscito :metallica .....

    Ho perso un ora a capire dove sbagliavo ma alla fine ce l'ho fatta. L'errore era molto diota, cercavo di far partire il 3d facendo una chiamata a run invece che a start.... Ma ora va ed è questo che conta ....

    Un altra cosa xò come faccio a rendere inattiva il frame che mi lancia i due 3d? Non voglio permettere che l'utente possa modificare i dati mentre l'elaborazione è in corso.....

  5. #5
    come può modificare i dati l'utente?? Tramite JTextField??
    Se sono JTextField puoi impostarli su disabled fintanto che i thread sono in esecuzione
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  6. #6
    dvx80
    Guest
    no niente textfield voglio che nel momento che in cui il 3d viene lanciato il jframe diventi inattivo o che proprio scompaia finche il 3d non finisce.

    Ma non so come fare per via del 3d. Mi ha incasinato un po la logica di esecuzione del programma...

  7. #7
    Puoi postare il codice???Così vediamo come è strutturato

    CIauz
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  8. #8
    dvx80
    Guest
    se vuoi posso anche postare tutto il codice ma sono qualche migliaio di righe....

    se vuoi.....

  9. #9

    ..solo il pezzo relativo alla chiamata del metodo start
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

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.