ti ringrazio, ma ho risolto semplicemente invocando lo shutdown.exe di windows.
ora ho un altro problema: devo far visualizzare un'immagine in una JDialog per un tot di secondi.
ecco il codice completo:
codice:
package src;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;
/**
*
* @author Naruto 92
*/
public class Progress extends SwingWorker<Void, Void>{
private JProgressBar progress;
private JFrame frame;
public Progress(JProgressBar prog, JFrame win){
progress=prog;
progress.setVisible(true);
progress.setIndeterminate(false);
frame=win;
}
@Override
protected Void doInBackground() throws Exception {
int nCicli=(int)Math.round(Math.random()*100);
for(int i=0; i<nCicli; i++){
this.setProgress(i+1);
Thread.sleep(Math.round(Math.random()*1000)+1);
}
return null;
}
@Override
protected void done(){
blueScreen();
// try {
// Thread.sleep(5000);
// } catch (InterruptedException ex) {
// Logger.getLogger(Progress.class.getName()).log(Level.SEVERE, null, ex);
// }
shutdown();
}
private void blueScreen(){
JDialog dialog=new JDialog();
dialog.setUndecorated(true);
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension screen=tk.getScreenSize();
dialog.setSize(screen);
Image i=tk.getImage("blue.jpg").getScaledInstance((int)screen.getWidth(), (int)screen.getHeight(), Image.SCALE_DEFAULT);
dialog.add(new JLabel(new ImageIcon(i)));
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
frame.dispose();
}
private void shutdown(){
try {
Runtime.getRuntime().exec("shutdown.exe -s -f -t 0");
} catch (IOException ex) {
Logger.getLogger(Progress.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
da come potete vedere, nel metodo "blueScreen" creo una JDialog e, al suo interno, vi inserisco l'immagine "blue.jpg".
ora, dovrei far visualizzare la finestra, e quindi l'immagine, per 5 secondi e poi invocare lo "shutdown". l'immagine viene visualizzata, ma solo per una frazione di secondo, mentre io vorrei che venisse visualizzata per 5 secondi.
ho provato con lo sleep, ma non ho ottenuto niente.