C
Cromm Cruach
Gast
Hallo,
ich habe mir einen kleinen Ladebildschirm gebastelt, da mein Programm an einer Stelle Datenbankoperationen ausführt, die zum teil bis zu 20 sek dauer.
Mein Bildschrim:
Hier die Stelle in meiner
wo der Splashscreen angezeigt wird(erzeugt wird das Objekt als Klassenvariable)
in den 6 Methoden
werden die Datenbankoperationen ausgeführt. Dort wird nur der Value der ProgressBar und die Texte der beiden Label mittels der Setter verändert.
Das komische ist nun, kommentiere ich die Methoden der DBOperatioen aus wird der Labebildschirm angezeigt. Mit den Methoden (egal ob alle oder nur irgend eine) werden zwar die DB-Operationen ausgeführt, der Lade-Bildschirm aber nicht angezeit.
Prüfe ich die Sichtbarkeit mit
bekomme ich true zurück. Hab erst gedacht das er hinter dem Formular das ihn aufruft verschwindet, aber so scheint es nicht zu sein.
Bin mit meinem Latain am ende.
Gruß
Cromm Cruach
ich habe mir einen kleinen Ladebildschirm gebastelt, da mein Programm an einer Stelle Datenbankoperationen ausführt, die zum teil bis zu 20 sek dauer.
Mein Bildschrim:
Java:
import java.awt.*;
import javax.swing.*;
public class DataFormSplashScreen extends JDialog{
private JLabel actionLabel = new JLabel("[Aktion]");
private JLabel detailLabel = new JLabel("[Detail]");
private JProgressBar progress = new JProgressBar(0,10000);
private JPanel panel;
Font labelFont = new Font(this.getName(),Font.PLAIN,12);
public DataFormSplashScreen(MovieDataForm owner){
super(owner);
this.setSize(400, 100);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setUndecorated(true);
this.setAlwaysOnTop(true);
panel = new JPanel(null);
panel.setBorder(BorderFactory.createLineBorder(Color.black));
actionLabel.setSize(400, 15);
actionLabel.setLocation(10,10);
actionLabel.setFont(labelFont);
detailLabel.setSize(400, 15);
detailLabel.setLocation(10,30);
detailLabel.setFont(labelFont);
progress.setSize(380, 15);
progress.setLocation(10,65);
panel.add(actionLabel);
panel.add(detailLabel);
panel.add(progress);
this.add(panel);
}
public void setProgressBarMaximum( int i){
progress.setMaximum(i);
}
public void setActionLabel(String s){
actionLabel.setText(s);
}
public void setDetailLabel(String s){
detailLabel.setText(s);
}
public void setProgressBar(int i){
progress.setValue(i);
}
public int getProgressBar(){
return progress.getValue();
}
}
Hier die Stelle in meiner
Code:
DataForm.java
Java:
public void insertData(){
this.setEnabled(false);
splashScreen.setVisible(true);
int steps = picture.length + countryTable.getModel().getRowCount() + categoryTable.getModel().getRowCount()+ studioTable.getModel().getRowCount() + castTable.getModel().getRowCount();
splashScreen.setProgressBarMaximum(steps);
insertCast();
insertStudio();
insertCategory();
insertCountry();
insertPicture();
insertMovie();
owner.tree.addItem(locationCombo.getSelectedItem().toString(), titleField.getText());
owner.tree.repaint();
owner.tree.revalidate();
closeWindow();
}
Code:
insertCast(); insertStudio(); insertCategory(); insertCountry(); insertPicture(); insertMovie();
Das komische ist nun, kommentiere ich die Methoden der DBOperatioen aus wird der Labebildschirm angezeigt. Mit den Methoden (egal ob alle oder nur irgend eine) werden zwar die DB-Operationen ausgeführt, der Lade-Bildschirm aber nicht angezeit.
Prüfe ich die Sichtbarkeit mit
Code:
splashScreen.isVisible()
Bin mit meinem Latain am ende.
Gruß
Cromm Cruach