Hallo Leute!
Seit ca. 3 monaten bin ich am java lernen und stehe nun vor einem Problem, wo ich nicht wirklich eine Lösung finde.
Ich habe mir eine Klasse geschrieben, in der ein JWindow mit einem Progressbar angzeigt wird. Dieses Fenster wird solange angezeigt, bis ein zweiter Thread beendet ist. Das Funktioniert auch tadellos und ohne probleme. Allerdings möchte ich, das dieses Fenster sollange imFordergrund bleibt bis der andere Thread beendet ist. Soblad man woanders hinklickt ist dieses Fenster weg (im Hintergrund, da der Thread läuft).
Ich habe es auch mit einem JDialog versucht, den ich auf Modal gestellt habe, aber dann funktioniert gar nix mehr.
Seit ca. 3 monaten bin ich am java lernen und stehe nun vor einem Problem, wo ich nicht wirklich eine Lösung finde.
Ich habe mir eine Klasse geschrieben, in der ein JWindow mit einem Progressbar angzeigt wird. Dieses Fenster wird solange angezeigt, bis ein zweiter Thread beendet ist. Das Funktioniert auch tadellos und ohne probleme. Allerdings möchte ich, das dieses Fenster sollange imFordergrund bleibt bis der andere Thread beendet ist. Soblad man woanders hinklickt ist dieses Fenster weg (im Hintergrund, da der Thread läuft).
Ich habe es auch mit einem JDialog versucht, den ich auf Modal gestellt habe, aber dann funktioniert gar nix mehr.
Code:
public class MWProgressBar extends Thread {
JWindow frame = new JWindow();
Thread thread;
String txt;
/**
*
* @param wartenauf Thread
* @param progrestxt String
*/
public MWProgressBar(Thread wartenauf, String progrestxt){
this.thread = wartenauf;
this.txt = progrestxt;
}
public void run() {
try{
final JProgressBar jp = new JProgressBar();
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(jp);
jp.setPreferredSize(new Dimension(300,30));
jp.setStringPainted(true);
jp.setString(txt);
jp.setIndeterminate(true);
frame.pack();
frame.setLocationRelativeTo(null);
SwingUtilities.invokeAndWait(new Runnable(){
public void run() {
frame.setVisible(true);
}
});
Thread.sleep(1000);
do{
Thread.yield();
if (!thread.isAlive()){
frame.setVisible(false);
frame.dispose();
}
} while (thread.isAlive());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}