# JDialog - Inhalt bleibt weiß



## Bernasconi (8. Jun 2007)

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?


```
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.


----------



## SlaterB (8. Jun 2007)

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.....


----------



## Beni (8. Jun 2007)

Wenn der Dialog model ist, wird der Code nach "setVisible( true )" erst ausgeführt, nachdem die Dialog wieder geschlossen wurde.


----------



## Bernasconi (8. Jun 2007)

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:
> ...




```
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.


----------



## SlaterB (8. Jun 2007)

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


----------



## Bernasconi (9. Jun 2007)

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




```
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.


----------



## André Uhres (9. Jun 2007)

Entweder dem ContentPane einen FlowLayout verpassen,
oder einfach mit JOptionPane:

```
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");
        }
```


----------



## Bernasconi (9. Jun 2007)

André Uhres hat gesagt.:
			
		

> Entweder dem ContentPane einen FlowLayout verpassen,
> oder einfach mit JOptionPane:
> 
> ```
> ...


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.


----------



## André Uhres (18. Jun 2007)

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!


----------

