PDA

Visualizza la versione completa : [JAVA] JProgressBar e GUI


dvx80
04-08-2003, 14:08
Salve a tutti.

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



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.



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_CLOS E);

setLocation(Toolkit.getDefaultToolkit().getScreenS ize().height/3,Toolkit.getDefaultToolkit().getScreenSize().widt h/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 :)....

Zero-2
04-08-2003, 20:02
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

:ciauz:

dvx80
05-08-2003, 08:19
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......

dvx80
05-08-2003, 09:44
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.....

Zero-2
05-08-2003, 11:27
come pu modificare i dati l'utente?? Tramite JTextField??
Se sono JTextField puoi impostarli su disabled fintanto che i thread sono in esecuzione

dvx80
06-08-2003, 08:40
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...

Zero-2
06-08-2003, 16:45
Puoi postare il codice???Cos vediamo come strutturato :)

CIauz
:ciauz:

dvx80
07-08-2003, 08:09
se vuoi posso anche postare tutto il codice ma sono qualche migliaio di righe....

se vuoi.....

Zero-2
07-08-2003, 20:44
:stordita: :stordita:
..solo il pezzo relativo alla chiamata del metodo start :D:D

Loading