Swing JDialog zeigt keinen Inhalt an

Status
Nicht offen für weitere Antworten.

lukasgo

Mitglied
Hallo

Ich habe folgendes Problem und zwar hab ich einen JDialog welcher einfach nur ein Label mit dem Text "Bitte Warten" und einer ProgressBar beinhaltet, dieser JDialog soll sichtbar werden sobald ein Button gedrückt wird der eine Berechnung startet und soll wieder verschwinden sobald die Berechnung abgeschlossen ist.
Ich habe es soweit gebracht das der JDialog erscheint, aber ich hab nur den Rahmen, der Inhalt ist nicht sichtbar (gezeigt wird das was sich unter dem Dialog befindet), ich weiß schon nicht mehr was ich tun soll.

Java:
JDialog wait= new JDialog(this);
   wait.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
   wait.setTitle(bundle.getString("Wait"));
   wait.setAlwaysOnTop(true);
   wait.setName("wait"); // NOI18N

 javax.swing.GroupLayout waitLayout = new javax.swing.GroupLayout(wait.getContentPane());
        wait.getContentPane().setLayout(waitLayout);
        waitLayout.setHorizontalGroup(
            waitLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(waitLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(waitLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(waitLayout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jLabel4))
                .addContainerGap(40, Short.MAX_VALUE))
        );
        waitLayout.setVerticalGroup(
            waitLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(waitLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(waitLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel4)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

.....und dann noch in der actionperformed methode des buttons:

Java:
 wait.setSize(320,240);
 wait.setLocation(getWidth()/3+getX(),getHeight()/3+getY());
 wait.pack();

 wait.setVisible(true);

 Calculate.init();

 wait.setVisible(false);

Bitte helft mir!

mfg
lukasgo

P.S.: Ich sollte vielleicht noch dazusagen das der JDialog mit dem GUI Editor von Netbeans gemacht wurde und daher der Code etwas seltsam aussieht.
 
Zuletzt bearbeitet von einem Moderator:
Ich sollte vielleicht noch dazusagen das der JDialog mit dem GUI Editor von Netbeans gemacht wurde und daher der Code etwas seltsam aussieht.
Nein, er sieht seltsam aus weil du ihn nicht in Javacode-Tags gepackt hast 😉

Du musst wahrscheinlich die calcualte-Methode in einem extra Thread starten, da sie ansonsten die GUI blockiert.
ODER du startest die GUI im Event Dispatch Thread

Der JDialog ist nicht modal, ansonsten würde es auch dadran liegen
 
Erst mal danke für eure Antworten, zu der Methode das ich Calculate in einem extra Thread starte: Wie funktioniert das ich hab sowas noch nie gemacht, habt ihr dazu irgendwelche Beispielprogramme?

vielen dank
lukasgo
 
Java:
new Thread(new Runnable(){
public void run(){
// code...
}
}).start();
Oder einfach ein entsprechendes Kapitel z.b. in der Insel durchlesen, spart Arbeit 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben