Hallo,
im Programm werden Daten importiert. Währed des Imports soll ein JDialog mit "Bitte warten..." JLabel erscheinen. Erschienen ist garnix, bis ich die Decoration aktiviert habe. Habe hier im Forum Leite mit dem gleichen Problem gefunden und die Lösungen bei mir versucht-dasselbe. Habe im FAQ den Artikel "ProgressBars, Algorithmen und Multithreading" durchgeschaut und auch probiert die Sachen umzusetzen-auch nix. Habe beide Varianten versucht- Threads, SwingUtilities und SwingWorker. Bin am Ende meiner Weissheiten
Mein JDialog:
Aufrufende Methode einer anderen Klasse:
Was mache ich falsch?
im Programm werden Daten importiert. Währed des Imports soll ein JDialog mit "Bitte warten..." JLabel erscheinen. Erschienen ist garnix, bis ich die Decoration aktiviert habe. Habe hier im Forum Leite mit dem gleichen Problem gefunden und die Lösungen bei mir versucht-dasselbe. Habe im FAQ den Artikel "ProgressBars, Algorithmen und Multithreading" durchgeschaut und auch probiert die Sachen umzusetzen-auch nix. Habe beide Varianten versucht- Threads, SwingUtilities und SwingWorker. Bin am Ende meiner Weissheiten
Mein JDialog:
Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Dialog.ModalityType;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingWorker;
public class FensterWarten extends SwingWorker<Boolean,String>{
private JDialog dfenster=new JDialog();
private String text="Bitte warten...";
private JLabel tlabel=new JLabel();
public FensterWarten(String utext){
text=utext;
}
public void setText(String utext){
tlabel.setText(utext);
}
public void stop(){
dfenster.dispose();
}
@Override
protected Boolean doInBackground() throws Exception {
JPanel panel=new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createEtchedBorder());
dfenster.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dfenster.setModalityType(ModalityType.MODELESS);
dfenster.setAlwaysOnTop(true);
dfenster.setUndecorated(false);
dfenster.setLayout(new BorderLayout());
tlabel.setText(text);
panel.add(tlabel,BorderLayout.CENTER);
dfenster.add(panel,BorderLayout.CENTER);
dfenster.pack();
Dimension mdim=Toolkit.getDefaultToolkit().getScreenSize();
Dimension fdim=dfenster.getSize();
int nh=(int)((mdim.getHeight()/2)-(fdim.getHeight()/2));
int nb=(int)((mdim.getWidth()/2)-(fdim.getWidth()/2));
dfenster.setLocation(100,100);
dfenster.setVisible(true);
return true;
}
}
Aufrufende Methode einer anderen Klasse:
Code:
private void popFenster(){
wfenster=new FensterWarten("Bitte warten...");
wfenster.execute();
}