Swing JDialog Ladebildschirm wird nicht angezeit

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:

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
wo der Splashscreen angezeigt wird(erzeugt wird das Objekt als Klassenvariable)

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();
	}
in den 6 Methoden
Code:
insertCast(); insertStudio(); insertCategory(); insertCountry(); insertPicture(); insertMovie();
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
Code:
splashScreen.isVisible()
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
 

bERt0r

Top Contributor
Erstmal fällt mir nur auf dass du ein Null Layout verwendest und das ist schon mal unter aller ***. Den zweiten Code flicken den du nicht in java tags gepackt hast habe ich jetzt nicht durchgeschaut. Eventuell morgen. Auf jeden Fall ist es immer ein RIESEN problem wenn man keinen Layoutmanager verwendet (null) denn dann passieren immer lustige sachen die man sich als Anfänger nicht erklären kann.
 
C

Cromm Cruach

Gast
So habe noch ein wenig debugt. Hier noch mal der Code:

Java:
	public void insertData(){
		
		splashScreen = new DataFormSplashScreen();
		
                splashScreen.setVisible(true);
		this.setEnabled(false);
		
		int steps = picture.length + countryTable.getModel().getRowCount() + categoryTable.getModel().getRowCount()+ studioTable.getModel().getRowCount() + castTable.getModel().getRowCount();
		
		splashScreen.setProgressBarMaximum(steps);
		splashScreen.repaint();
		splashScreen.revalidate();

		//insertCast();
		//insertStudio();
		//insertCategory();
		//insertCountry();
		//insertPicture();
		//insertMovie();
		
		owner.tree.addItem(locationCombo.getSelectedItem().toString(), titleField.getText());
		owner.tree.repaint();
		owner.tree.revalidate();
		
		//splashScreen.dispose();
		//closeWindow();
	}

So wir der Screen angezeigt. Habe mal an jeder Zeile nen Breakpoint gesetzt. Der screen wird nicht am Punkt
Code:
splashScreen.setVisible(true);
angezeigt sondern erst am ende nach der Methode.

Kommentiere ich nur die letzten beiden Zeilen aus werden die Daten in die DB eingetragen und dann der Ladebildschirm angezeigt. Er ist dann korrekt "ausgefüllt" so wie es auch zu laufzeit geschehen soll. Er wird nur nicht angezeigt bzw zu spät!
 
C

Cromm Cruach

Gast
Habe das Problem selber lösen können. Hinterlasse mal eine Nachricht, falls jemand nochmal auf das Problem stößt.

Problem: Das Problem ist, das mein Datenbankprozess so rechenintensiv war, dass er die GUI blockierte. Somit waren keine ressourcen mehr da, um den Screen anzuzeigen oder zu aktualisieren. Das passierte erst nachdem die DB-Operation erledigt und somit Rechenkapazität wieder frei war.

Lösung: Seit Java 6 gibt es einen sog. SwingWorker. Mit ihm kann man die Operation ( nicht die GUI) in einen neuen Thread auslagern. Im Formular legt man nur den Ladebildschirm an und startet den SwingWorker. In ihm finden die DB-Operationen statt und von ihm aus kann man auch den Ladebildschirm aktualisieren.
 
V

vanny

Gast
Das hat nichts mit Rechenleistung zu tun sondern in der Art und Weise, wie Java mit GUI und EDT arbeitet.
Deine DB-Operationen haben dort einfach mal nichts zu suchen und mit dem SwingWorker hast du es ja dann auch entfernt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B Eingaben im JDialog abwarten AWT, Swing, JavaFX & SWT 4
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Button auf geöffnetem JDialog AWT, Swing, JavaFX & SWT 5
N Definitionen JDialog AWT, Swing, JavaFX & SWT 7
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
S Assistent im JDialog AWT, Swing, JavaFX & SWT 7
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
C Swing JDialog "flutet" den Arbeitsspeicher AWT, Swing, JavaFX & SWT 9
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
S Probleme jDialog einfügen AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
S Problem mit JDialog AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
hdi Swing Genaue Funktionsweise von modalem JDialog? AWT, Swing, JavaFX & SWT 11
U JDialog ohne Taskleiste AWT, Swing, JavaFX & SWT 7
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
Ollek JDialog Koponenten neu anordnen AWT, Swing, JavaFX & SWT 3
A JDialog AWT, Swing, JavaFX & SWT 10
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A JDialog ausdrucken AWT, Swing, JavaFX & SWT 7
aze JDialog mit runden ecken AWT, Swing, JavaFX & SWT 8
Dit_ JDialog nur horizontal vergrößern AWT, Swing, JavaFX & SWT 3
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M Swing Vererbung, Probleme mit JDialog AWT, Swing, JavaFX & SWT 12
H JDialog, Modal - Klassenübergreifend => Problem AWT, Swing, JavaFX & SWT 5
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
B JDialog AWT, Swing, JavaFX & SWT 6
J Swing Probmel mit JDialog (Modal/FocusLost/Button) AWT, Swing, JavaFX & SWT 5
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
D Mehrere Comboboxen in JDialog AWT, Swing, JavaFX & SWT 2
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
P Swing JDialog schliesst nicht AWT, Swing, JavaFX & SWT 2
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
N Swing Frage zu modalem JDialog. AWT, Swing, JavaFX & SWT 16
A JFrame oder JDialog AWT, Swing, JavaFX & SWT 12
B Swing JDialog : Herausfinden wie dieser beendet wurde? AWT, Swing, JavaFX & SWT 2
T JDialog ohne Fenstermanager? AWT, Swing, JavaFX & SWT 2
S JDialog in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
C Swing JComboBox in JDialog AWT, Swing, JavaFX & SWT 3
F Frage zu Dialogen mit JDialog -Erstellung des Konstruktors AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben