JDialog - Inhalt bleibt weiß

Status
Nicht offen für weitere Antworten.

Bernasconi

Mitglied
Hallo

ich habe die Suchfunktion benutzt und meine Zeilen verglichen. Allerdings konnte ich den Fehler nicht erkennen. Ich habe ein JDialog erstellt, der aber weiss und leer bleibt. Immerhin er wird erzeugt und den Titel übernimmt er auch. Jedoch werden meine Elemente nicht dargestellt.

simple frage: warum?

Code:
   		JDialog dialog = new JDialog( frameref, "Sind Sie sicher?", true );
    		dialog.getContentPane().setLayout( null );
    		dialog.setLocation(400,300);
    		dialog.setSize(300,150);
    		dialog.setResizable(false);
    		dialog.setBackground(Color.black);
    		dialog.setVisible(true);
    		
    		//Label
    		JLabel label = new JLabel( "Möchten Sie die Anzeige zurücksetzen?" );
    		
    		//Button OK
    		JButton bok = new JButton( "OK" );
    		
    		//Button ABBR
    		JButton babbr = new JButton( "Abbrechen" );
    				
    		dialog.getContentPane().add(label);
    		dialog.getContentPane().add(bok);
    		dialog.getContentPane().add(babbr);

Gibt es schon vorgefertigte solche Formulare? Weil die Listener für die OK und ABBR Buttons muss ich ja dann auch noch irgendwie einbauen und so...

Danke für jede Hilfe.
 
alles was du nach setVisible(true) in eine beliebige Swing-GUI einfügst
wird standardmäßig nicht angezeigt

rufe entweder validate() auf oder viel besser:
setze
setVisible(true)
ans Ende.....
 
Wenn der Dialog model ist, wird der Code nach "setVisible( true )" erst ausgeführt, nachdem die Dialog wieder geschlossen wurde.
 
SlaterB hat gesagt.:
alles was du nach setVisible(true) in eine beliebige Swing-GUI einfügst
wird standardmäßig nicht angezeigt

rufe entweder validate() auf oder viel besser:
setze
setVisible(true)
ans Ende.....

Code:
    		JDialog dialog = new JDialog( frameref, "Sind Sie sicher?", true );
    		dialog.getContentPane().setLayout( null );
    		dialog.setLocation(400,300);
    		dialog.setSize(300,150);
    		dialog.setResizable(false);
    		dialog.setBackground(Color.black);
    		
    		//Label
    		JLabel label = new JLabel( "Möchten Sie die Anzeige zurücksetzen?" );
    		
    		//Button OK
    		JButton bok = new JButton( "OK" );
    		
    		//Button ABBR
    		JButton babbr = new JButton( "Abbrechen" );
    				
    		dialog.getContentPane().add(label);
    		dialog.getContentPane().add(bok);
    		dialog.getContentPane().add(babbr);	
    		
 ------>     dialog.setVisible(true);

so habe ich genau das selbe Resultat, es bleibt weiss. Aber trotzdem danke, aber daran scheints nicht zu liegen.
 
Post von Beni nicht übersehen

wenn du aber nicht mal das zweite ausprobierst, was ich so dringend empfohlen habe,
dann selbst schuld trotz meines leicht fehlgeleiteten Vorschlags 😉
 
SlaterB hat gesagt.:
Post von Beni nicht übersehen

wenn du aber nicht mal das zweite ausprobierst, was ich so dringend empfohlen habe,
dann selbst schuld trotz meines leicht fehlgeleiteten Vorschlags 😉

Code:
    		JDialog dialog = new JDialog( frameref, "Sind Sie sicher?", true );
    		dialog.getContentPane().setLayout( null );
    		dialog.setLocation(400,300);
    		dialog.setSize(300,150);
    		dialog.setResizable(false);
    		dialog.setBackground(Color.black);
    		
    		//Label
    		JLabel label = new JLabel( "Möchten Sie die Anzeige zurücksetzen?" );
    		
    		//Button OK
    		JButton bok = new JButton( "OK" );
    		
    		//Button ABBR
    		JButton babbr = new JButton( "Abbrechen" );
    				
    		dialog.getContentPane().add(label);
    		dialog.getContentPane().add(bok);
    		dialog.getContentPane().add(babbr);	
    		
---->    		dialog.setVisible(true);
---->   		dialog.validate();

Auch diese Variante ändert daran nichts. Zu den anderen Tipps: Deswegen habe ich dialog.setVisible(true); ans Ende gesetzt.

Das Formular funktioniert im Grundsatz wie es sollte (andere Fenster werden gesperrt), einfach ohne angezeigte Flächen bzw. Buttons und Text.

Vielleicht habe ich eine wichtige Info weggelassen(natürlich nicht absichtlich): Nicht mal setBackground(Color.black); funktioniert. Das heisst, ich glaube langsam, dass ich bereits bei der erzeugung etwas falsch mache, obwohl das Fenster eigentlich kommt (halt weiss)...

hoffentlich konnte ich euch helfen, mir zu helfen.
 
Entweder dem ContentPane einen FlowLayout verpassen,
oder einfach mit JOptionPane:
Code:
       int result = JOptionPane.showConfirmDialog(frameref, "Möchten Sie die Anzeige zurücksetzen?", 
                "Sind Sie sicher?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
        if(result == JOptionPane.OK_OPTION){
            System.out.println("OK");
        }else{
            System.out.println("Abbrechen");
        }
 
André Uhres hat gesagt.:
Entweder dem ContentPane einen FlowLayout verpassen,
oder einfach mit JOptionPane:
Code:
       int result = JOptionPane.showConfirmDialog(frameref, "Möchten Sie die Anzeige zurücksetzen?", 
                "Sind Sie sicher?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
        if(result == JOptionPane.OK_OPTION){
            System.out.println("OK");
        }else{
            System.out.println("Abbrechen");
        }
Danke dir herzlich! Der zweite Teil also der Code habe ich genau gesucht (JOptionPane) kannte ich nicht.

Aber eine andere Frage. Wenn ich jetzt beide Fenster im selben Style haben will, muss das Hauptfenster mit JFrame extended sein oder? Weil bis jetzt ist es Frame. Und jetzt habe ich das Hauptfenster im Windowslook und die JOptionPane in Metal-style.

edit: Hat sich erledigt. Ich habe anstatt JButton einfach Button verwendet, dadurch hatte ich das WindowsStyle standard.
 
Bernasconi hat gesagt.:
..Weil bis jetzt ist es Frame. Und jetzt habe ich das Hauptfenster im Windowslook und die JOptionPane in Metal-style..
Nur noch als Erklärung:
"JOptionPane" ist eine Swing-Komponente und "Frame" ist AWT-Komponente.
Man sollte AWT-Komponenten möglichst nicht mit Swing-Komponenten mischen!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben