JDialog zeigt Text nicht an

kodela

kodela

Bekanntes Mitglied
Hallo,

an anderer Stelle hier im Forum habe ich versucht, mein Problem mit der Verlaufsanzeige zu lösen. Nachdem sich herausstellte, dass dies nur mit sehr hohem Aufwand möglich ist, verzichtete ich auf die Verlaufsanzeige und beschränkte mich auf einen reinen Warten-Dialog. Damit kann ich jetzt für mein Stradoku-Programm während der Warten-Dialog angezeigt wird, die Eindeutigkeitsprüfung durchführen, um anschließend zur jeweils auslösenden Methode zurück zu kehren.

Wie gesagt, das alles funktioniert. Unverständlicherweise wird jedoch im Warten-Dialog kein Text angezeigt.

Hier der Code für die Klasse 'HinweisWarten", welche für den Warten-Dialog zuständig ist:

Java:
import javax.swing.JDialog;

/**
* Einfacher Warten-Dialog
*/
public class HinweisWarten extends JDialog {

    private static final long serialVersionUID = 1L;
    public javax.swing.JLabel labelText;

   
    /**
     * Konstruktor
     * @param parent Superklasse
     */
    public HinweisWarten(java.awt.Frame parent) {
        super(parent, true);
        initComponents();
        setModal(false);
        setLocationRelativeTo(parent);
    }

    /**
     * Setzt den anzuzeigenden text.
     * @param txt
     */
    public void zeigeHinweis(String txt){
        labelText.setText(txt);
    }
   
    private void initComponents() {

        labelText = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Hinweis");
        setModalExclusionType(null);
        setName("dialogWarten");
        setResizable(false);

        labelText.setFont(new java.awt.Font("Tahoma", 1, 12));
        labelText.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        labelText.setText("<html><center><b>Erzeuge Stradoku-Aufgaben.<br><br>Bitte solange warten.</b></center></html>");
        labelText.setMaximumSize(new java.awt.Dimension(116, 45));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
       
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(18, Short.MAX_VALUE)
                .addComponent(labelText, javax.swing.GroupLayout.PREFERRED_SIZE, 216, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(19, 19, 19))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addComponent(labelText, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(19, Short.MAX_VALUE))
        );

        pack();
    }
}
Ein Teil dieses Codes wurde vom GUI-Generator von NetBeans erzeugt. Der vorgegebene Text für 'labelText' wird von der Methode 'checkEindeutigkeit()' überschrieben, die so aussieht:
Java:
    /**
     * Führt die Eindeutigkeitsprüfung für ein Stradoku aus.
     * @return  true wenn eindeutig, sonst false
     */
    public Boolean checkEindeutigkeit(){
        hnw = new HinweisWarten(strApp);
        hnw.labelText.setText("<html><center><b>Eindeutigkeit wird überprüft."
            + "<br><br>Bitte solange warten.</b></center></html>");
        hnw.setVisible(true);
        int afg[] = new int[81];
        int lsg[] = new int[81];
        kopieren(aufgabe, afg, false);
        for (int i = 0; i < 81; i++) {
            int lw = loesung[i] & ~LWF;
            if (loesung[i] <= LWRT && loesung[i] > 9) {
                for (int k = 1; k <= 9; k++) {
                    if (lw != k) {
                        afg[i] = k;
                        strLoeser = new LevelLoeser(null, afg, lsg, false);
                        int lev = strLoeser.loeseAufgabe();
                        if (lev > 0) {
                            hnw.setVisible(false);
                            return false;
                        } else {
                            kopieren(aufgabe, afg, false);
                        }
                    }
                }
            }
        }
        hnw.setVisible(false);
        return true;
    }

Kann mir bitte jemand sagen, wie ich es erreiche, dass im Dialog auch der Text angezeigt wird?
 
L

LimDul

Top Contributor
Die Antwort wird dir nicht gefallen - du musst die Berechnung in einen eigenen Thread z.B. mittels SwingWorker auslagern. Anders geht sowas schlicht nicht. Du befindest dich im Event Dispatching Thread, solange deine Berechnung läuft ist deine GUI eingefroren.
 
kodela

kodela

Bekanntes Mitglied
Ich glaube Dir, verstehe es aber nicht. Der Dialog wird angezeigt, der Text im Dialog nicht.
 
L

LimDul

Top Contributor
Der Text wird vermutlich beim nächsten Aufruf von paintComponent angezeigt, während das erzeugen des Dialogs schon in setVisible passiert. Zum nächsten paintComponent kommt es aber erst nachdem deine Methode fertig ist.
 
mihe7

mihe7

Top Contributor
Mal ein kleines Beispiel:
Java:
import javax.swing.*;
import java.util.List;

public class Test {

    public void run() {
        JButton button = new JButton("Tu was!");
        button.addActionListener(e -> someAction());

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(button);
        frame.pack();
        frame.setVisible(true);
    }

    private void someAction() {
        JLabel message = new JLabel("");                
        JDialog dialog = progressDialog(message);

        new SwingWorker<Void, String>() {

            protected Void doInBackground() {
                // some hard work
                for (int i = 0; i < 5; i++) {
                    publish("Warte... " + (i+1));
                    try { Thread.sleep(1000); } catch (InterruptedException ex) {}
                }
                return null;
            }

            protected void process(List<String> steps) {
                message.setText(steps.get(steps.size() - 1));
            }
            protected void done() {
                dialog.dispose();
            }
        }.execute();
    }

    private JDialog progressDialog(JComponent content) {
        JDialog dialog = new JDialog();
        dialog.setTitle("Fortschritt");
        dialog.add(content);
        dialog.setSize(300,200);
        dialog.setVisible(true);
        return dialog;
    }

    

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Exception/Error auf JDialog umleiten Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
T JDialog vor Hauptfenster beim Start Allgemeine Java-Themen 5
P Trotz setModal, der JDialog ist nicht modal ? Allgemeine Java-Themen 18
B gridbaglayout und modaler jdialog Allgemeine Java-Themen 7
C Speicherverbrauch von JDialog enorm Allgemeine Java-Themen 6
D Probleme mit Browserfenster und modaler JDialog Allgemeine Java-Themen 17
J JDialog Bild als Hintergrund Allgemeine Java-Themen 19
S visible prob mit JFrame und JDialog Allgemeine Java-Themen 4
X Swing JTable zeigt nichts Allgemeine Java-Themen 4
D Java zeigt Buttons nicht korrekt an Allgemeine Java-Themen 0
T Stacktrace zeigt ...(Unknown Source) Allgemeine Java-Themen 10
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
Messoras List zeigt nur das letzte Element an Allgemeine Java-Themen 14
F JFrame zeigt Hintergrund und nicht den Inhalt Allgemeine Java-Themen 12
lumo Row Header ist public, zeigt die funktion aber nicht public Allgemeine Java-Themen 8
N Array Element vom Typ eines Objekts zeigt auf ein anderes A. Allgemeine Java-Themen 4
S Eclipse zeigt build.xml immer als fehlerhaft Allgemeine Java-Themen 12
S findbugs zeigt unter Eclipse 3.2 nichts an Allgemeine Java-Themen 2
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
L Text filtern Allgemeine Java-Themen 1
Bluedaishi TEXT Kodierung Allgemeine Java-Themen 3
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
S Ini Text aus String parsen Allgemeine Java-Themen 1
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
windl Text mining / deep learning Allgemeine Java-Themen 0
I Text aus Input-Box entnehmen und zuweisen Allgemeine Java-Themen 1
KeexZDeveoper Text Mining Allgemeine Java-Themen 3
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
B Arrays mit Text und Zahlen füllen Allgemeine Java-Themen 3
A Datenexport (Text und Draw) Allgemeine Java-Themen 1
L Text von txt auf JTextArea Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
I Apache POI Word Text einfügen Allgemeine Java-Themen 26
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
B Farbiger Text in der Konsole Allgemeine Java-Themen 1
K Pdf mit dynamischem Text mit iText Allgemeine Java-Themen 0
D Text Analyzer Allgemeine Java-Themen 2
RalleYTN Audiodatein(.ogg/.wav) in Text konvertieren Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
S Text in mehreren Sprachen korrekt darstellen? Wie waehle ich die Fonts aus..? Allgemeine Java-Themen 0
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
M Text in erstelltes Excelfile schreiben Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
P HTML Text bearbeiten Allgemeine Java-Themen 1
B JFrame Text Ausgabe Allgemeine Java-Themen 7
G Makierter Text in Arbeitsspeicher Allgemeine Java-Themen 2
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
M Variablen Variablen in Text einbinden Allgemeine Java-Themen 5
P iText Text zentrieren Allgemeine Java-Themen 3
J Verschlüsselung von Text? Allgemeine Java-Themen 2
M Text datei in java jar datei einbinden Allgemeine Java-Themen 4
S Swing Text in eine JTextArea schreiben Allgemeine Java-Themen 17
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
S Robuste Methode um Text von HTML code zu extrahieren..? Allgemeine Java-Themen 6
achillesat Rich Text Editor Allgemeine Java-Themen 2
M CMD-Text anzeigen Allgemeine Java-Themen 10
G Text Mining Allgemeine Java-Themen 7
B Text auf Standarddrucker drucken Allgemeine Java-Themen 3
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
nrg Find and replace Text docx Allgemeine Java-Themen 6
M Ein bestimmtes Wort in einem Text zählen (String in String) Allgemeine Java-Themen 9
S Text in for Schleife in Label einfügen Allgemeine Java-Themen 4
M Funktion gesucht: Text vektorisieren Allgemeine Java-Themen 20
D Wort in Text mit >100.000 Wörter finden Allgemeine Java-Themen 7
B Text wird nicht richtig angezeigt Allgemeine Java-Themen 9
Q Text Datei einlesen Allgemeine Java-Themen 27
N .doc text ändern Allgemeine Java-Themen 12
R Komponente hat nicht die gesetzten Eingeschaften (Text, Farbe) Allgemeine Java-Themen 3
M NOA an den Source Text des Dokumentes kommen Allgemeine Java-Themen 7
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
A Umwandlung von Text/Zeichen in Polynome Allgemeine Java-Themen 8
Y Eclipse ppt Folie erzeugen + text plazieren Allgemeine Java-Themen 4
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
D markierten Text kopieren Allgemeine Java-Themen 2
P Doppeltverkettete Listen + Text Allgemeine Java-Themen 5
DEvent embedded Object Database in Text Format Allgemeine Java-Themen 5
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
M String in Html Text umwandeln Allgemeine Java-Themen 2
T eingefügter Text nach dem rendern spiegelverkehrt Allgemeine Java-Themen 2
lumo encoding einer text-datei Allgemeine Java-Themen 2
E Text ans Ende einer Textdatei anfügen Allgemeine Java-Themen 2
E JTextArea / JEditorPane + Text formatieren Allgemeine Java-Themen 3
R Java Text anderer Schriftart einlesen Allgemeine Java-Themen 2
A AES Key aus Text erzeugen Allgemeine Java-Themen 2
S Koordinaten aus einem Text filtern Allgemeine Java-Themen 11
turmaline Text aus Web-Seiten auslesen Allgemeine Java-Themen 1
MQue Graphics2D Text Allgemeine Java-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben