Estou com um problema na hora de exibir uma tela Splash.
No meu sistema, tenho a opção de fazer backup do banco; como esta é uma tarefa pesada, gostaria de exibir na tela uma mensagem informando que o backup esta sendo feito; e, quando terminar esta mensagem some e aparece um JoptionalPanel informando que o backup foi concluído.
Mas a mensagem só aparece depois que o backup termina, ou seja, no momento do backup parece que o sistema está travado, e depois exibe as duas telas simultânea.
Me disseram que o splash só funciona antes do sistema iniciar. (dentro do main). E agora, o que posso fazer, alguém tem alguma solução?
O mesmo tenho que fazer no meu sistema, tentei usar o SplashScreen, porém não exibe a tela SplashScreen durante o backup que realizo.
Isso é importante para o cliente saber que algo está sendo executado, e não pensar que um erro ocorreu.
Se alguém souber de alguma dica, agradeço.
V
ViniGodoy
wfs:
O mesmo tenho que fazer no meu sistema, tentei usar o SplashScreen, porém não exibe a tela SplashScreen durante o backup que realizo.
Isso é importante para o cliente saber que algo está sendo executado, e não pensar que um erro ocorreu.
Se alguém souber de alguma dica, agradeço.
Obrigado Samuel, vou tentar resolver o problema, se eu conseguir eu mudo o tópico para resolvido.
A
atilaraphael
Olá ViniGodoy e Samuel, vocês deram uns links para resolução do problema. Mas eu já tentei de tudo, virei a madrugada e nada. está do mesmo jeito que o Splash Screen.
Ele só exibe o ProgressBar quando termina de executar o backup.
Tem como vocês ou outra pessoa postar um exemplo de uma execução simultânea que rode em uma classe comum sem ser dentro do método main.
Grato.
Obs.: Qual foi o mentiroso que inventou o Thread? rsrsrs.
V
ViniGodoy
Não é possível. Você chegou a criar outra thread? Ou a disparar o SwingWorker?
Posta aí seu código.
A
atilaraphael
ViniGodoy:
Não é possível. Você chegou a criar outra thread? Ou a disparar o SwingWorker?
Posta aí seu código.
Classe ProgressBar.java
importcontrol.Consultorio;importjava.awt.*;importjavax.swing.*;importjava.beans.*;importjava.util.Random;publicclassProgressBarextendsJPanelimplementsPropertyChangeListener{privateJProgressBarprogressBar;privateJLabelfases;privateTasktask;privatestaticJDialogframe;privatestaticStringcaminho;privatestaticConsultoriocontroladora;privatestaticBackupBancobackup;classTaskextendsSwingWorker<Void,Void>{@OverridepublicVoiddoInBackground(){Randomrandom=newRandom();intprogress=0,fase=1;setProgress(0);try{//Executa o Backup do banco e o ProgressBar fica paradonewMyThread(backup,caminho,controladora).run();while(progress<100){//Sleep for up to one second.Thread.sleep(random.nextInt(1000));//Make random progress.progress+=random.nextInt(10);setProgress(Math.min(progress,100));if((progress>=100)&&(BackupBanco.situacao==false)){fase++;setProgress(0);progress=0;fases.setText("Fase:"+fase);}}}catch(Exceptionignore){ignore.getLocalizedMessage();}returnnull;}@Overridepublicvoiddone(){Toolkit.getDefaultToolkit().beep();setCursor(null);JOptionPane.showMessageDialog(null,"Backupefetuadocomsucesso!","Informação",JOptionPane.INFORMATION_MESSAGE);}}publicProgressBar(){super(newBorderLayout());progressBar=newJProgressBar(0,100);progressBar.setValue(0);progressBar.setStringPainted(true);fases=newJLabel("Fase:1");fases.setVisible(true);JPanelpanel=newJPanel();panel.add(fases);panel.add(progressBar);add(panel,BorderLayout.PAGE_START);setBorder(BorderFactory.createEmptyBorder(25,30,25,30));setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));task=newTask();task.addPropertyChangeListener(this);task.execute();}publicvoidpropertyChange(PropertyChangeEventevt){if("progress"==evt.getPropertyName()){intprogress=(Integer)evt.getNewValue();progressBar.setValue(progress);}}publicstaticvoidcreateAndShowGUI(){frame=newJDialog();frame.setTitle("EfetuandoBackup");frame.setModal(true);JComponentnewContentPane=newProgressBar();newContentPane.setOpaque(true);frame.setContentPane(newContentPane);frame.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);}publicstaticvoidIniciarProgressBar(Stringcaminho,Consultorioc,BackupBancob){ProgressBar.caminho=caminho;ProgressBar.controladora=c;ProgressBar.backup=b;//ProgressBar.backupBanco = bac;javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});}}