# JOptionPane mit andere Farbe



## Guest (6. Mrz 2008)

Hi, kann man die Hintergrund- und  Schriftfarbe von JOptionPane umstellen?


----------



## MiDniGG (7. Mrz 2008)

Also ich hab grad mal geschaut und keine Möglichkeit gefunden.

Das einzige was mir jetzt einfallen würde ist:

1.) Panel drauf legen und den färben (wird aber wohl nicht alles farbig.. Also schlecht)

2.) Selber bauen und mit Farbe machen

3.) Anderes Look And Feel einstellen (z.B. substances oder eigenes mit eigener Farbe)

4.) Das ist wohl die schnellste einen JDialog erstellen, denn da gibts immerhin setOpaque() und setBackground() also denke ich, dass es damit gehen sollte ^^

Gruß


----------



## SlaterB (7. Mrz 2008)

> Panel drauf legen 

kann man denn ein JOptionPane derart modifizieren?


----------



## The_S (7. Mrz 2008)

jap


```
JPanel pane = new JPanel();
		pane.add(new JLabel("label"));
		pane.add(new JButton("Wohooo"));
		pane.setBackground(Color.RED);
		JOptionPane.showMessageDialog(null, pane, "test", JOptionPane.ERROR_MESSAGE);
```


----------



## L-ectron-X (7. Mrz 2008)

@Gast: Bitte Doppelpostings vermeiden!


----------



## MiDniGG (7. Mrz 2008)

LeX wo is da überhaupt en post?
Oder war der ganze Beitrag doppelt?


----------



## Guest (10. Mrz 2008)

Ich habe diese Pane selbe erstellt kann ich aber nicht färben


```
Object[] Name= {"Name", new JTextField(),
                                 "Vorname", new JTextField()};

             JOptionPane op= new JOptionPane( Name,
                                                 JOptionPane.PLAIN_MESSAGE,
                                                 JOptionPane.OK_CANCEL_OPTION);
             op.createDialog(this, "Titel").setVisible(true);
             op.setBackground(Color.black);
```


----------



## MiDniGG (10. Mrz 2008)

Hm. Also wenn das mit dem .setBackround geht ist das Toll. 

Aber wenn du sowas machst solltest du bei Frames noch setOpaque(true) machen. Das heißt, dass ja mehr oder weniger die eigene Farbe unsichtbar gesetzt wird.

gruß

*Edit:* OK Habs etz mal getestet:


```
Object[] Name = {"Name", new JTextField(), "Vorname", new JTextField()}; 

		JOptionPane op = new JOptionPane( Name, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); 
		op.setOpaque(true);
		op.setBackground(Color.black);
		op.createDialog(this, "Titel").setVisible(true);
```

So geht es. Allerdings! wird nur der Teil wo nichts drauf geschrieben ist farbig. D.H. du solltest das Object[] bzw. die Komponenten darauf auch noch irgendwie schwarz unterlegen.... Ich versuchs mal kurz u meld mich wieder...

*Edit2:*

So. Also das Maximum was ich mit meinem Wissen zusammenbring sieht wirklich.....bescheiden aus... Wenn du noch was rausfindest melde dich. 


```
JTextField nachname = new JTextField();
		JTextField vorname = new JTextField();
		
		JLabel lbNachname = new JLabel("Name");
		JLabel lbVorname = new JLabel("Vorname");

		lbVorname.setOpaque(true);
		lbVorname.setBackground(Color.BLACK);
		lbVorname.setForeground(Color.WHITE);
		lbNachname.setOpaque(true);
		lbNachname.setBackground(Color.BLACK);
		lbNachname.setForeground(Color.WHITE);
		
		Object[] name = {lbNachname, vorname, lbVorname, nachname};
		
		JOptionPane op = new JOptionPane( name, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); 
		op.setOpaque(true);
		op.setBackground(Color.BLACK);
		op.createDialog(this, "Titel").setVisible(true);
```

*Edit 3:*

So. Habs etz ma mit nem JDialog gemacht. Sieht so auch nicht so toll aus. Aber dank nem Frame kann man alles ja anpassen wie mans braucht. Also ich habs etz mal auf das geringste begrenzt. Viel Spaß damit:


```
JTextField nachname = new JTextField();
		JTextField vorname = new JTextField();
		
		JLabel lbNachname = new JLabel("Name");
		JLabel lbVorname = new JLabel("Vorname");
		
		JButton btOK = new JButton("OK");
		JButton btCancel = new JButton("CANCEL");
		
		lbVorname.setOpaque(true);
		lbVorname.setBackground(Color.BLACK);
		lbVorname.setForeground(Color.WHITE);
		lbNachname.setOpaque(true);
		lbNachname.setBackground(Color.BLACK);
		lbNachname.setForeground(Color.WHITE);
		
		BorderLayout layout1 = new BorderLayout();
		BorderLayout layout2 = new BorderLayout();
		BorderLayout layout3 = new BorderLayout();
		BorderLayout layout4 = new BorderLayout();
		
		JPanel frame = new JPanel(layout1);
		
		JPanel north = new JPanel(layout2);
		JPanel center = new JPanel(layout3);
		JPanel south = new JPanel(layout4);
		
		north.add(lbNachname, BorderLayout.WEST);
		north.add(nachname, BorderLayout.CENTER);
		center.add(lbVorname, BorderLayout.WEST);
		center.add(vorname, BorderLayout.CENTER);
		south.add(btOK, BorderLayout.WEST);
		south.add(btCancel, BorderLayout.CENTER);
		
		frame.add(north, BorderLayout.NORTH);
		frame.add(center, BorderLayout.CENTER);
		frame.add(south, BorderLayout.SOUTH);
		
		JDialog op = new JDialog();
		op.add(frame);
		op.setLocationRelativeTo(null);
		op.pack();
		op.setVisible(true);
```


----------



## Guest (10. Mrz 2008)

Vielen Dank für deine Mühe


----------

