---
title: 'Inselraus: Swings Farbauswahldialog JColorChooser'
url: 'https://tutego.de/blog/javainsel/2015/11/inselraus-swing-farbauswahldialog-jcolorchooser'
markdown: 'https://tutego.de/blog/javainsel/2015/11/inselraus-swing-farbauswahldialog-jcolorchooser.md'
date: '2015-11-25'
description: 'Mit einem JColorChooser lassen sich Farben über drei unterschiedliche Reiter auswählen. Der Benutzer hat die Auswahl zwischen vordefinierten Farben, HSB-Werten und RGB-Werten. Um den Farbauswahldialog auf den Bildschirm zu bekommen, genügt ein Aufruf von JColorChooser.showDialog(Component, String, …'
taxonomy:
  category:
    - Allgemein
---

# Inselraus: Swings Farbauswahldialog JColorChooser

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselraus: Swings Farbauswahldialog JColorChooser

25.11.2015 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Mit einem JColorChooser lassen sich Farben über drei unterschiedliche Reiter auswählen. Der Benutzer hat die Auswahl zwischen vordefinierten Farben, HSB-Werten und RGB-Werten. Um den Farbauswahldialog auf den Bildschirm zu bekommen, genügt ein Aufruf von `JColorChooser.showDialog(Component, String, Color)` mit drei Argumenten: einem Component-Objekt (dem Vater des Dialogs), dem Titel und einer Anfangsfarbe. Beendet der Benutzer den Dialog, wird als Rückgabewert die ausgewählte Farbe geliefert. Wird der Dialog abgebrochen, so ist der Rückgabewert `null`:

```java
JFrame f = new JFrame();
 f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
 JButton b = new JButton( "Farbe ändern" );
 f.add( b );
 b.addActionListener( new ActionListener() {
   @Override public void actionPerformed( ActionEvent e ) {
    Component comp = (Component) e.getSource();
    Color newColor = JColorChooser.showDialog( null,
                                               "Wähle neue Farbe",
                                               comp.getBackground() );
    comp.setBackground( newColor );
  }
 } );
 f.pack();
 f.setVisible( true );
```

Den Aufruf mit `showDialog(…)` einzuleiten, ist nicht der einzige Weg. Wir können auch den Konstruktor nutzen und dieses Exemplar später mit `JColorChooser.createDialog(…)` übergeben und anzeigen.

class `javax.swing.JColorChooser`extends JComponent implements Accessible

- `JColorChooser()`Erzeugt einen neuen Farbauswahldialog.
- `JColorChooser(Colorc)`Erzeugt einen neuen Farbauswahldialog mit einer vordefinierten Farbe.
- `staticColorshowDialog(Componentc,Stringtitle,ColorinitialColor)`Zeigt einen modalen Farbauswahldialog.
- `staticJDialogcreateDialog`(Componentc,Stringtitle,booleanmodal, JColorChooser chooserPane, ActionListener okLis, ActionListener cancelLis) Erzeugt einen neuen Dialog aufgrund des JColorChooser-Objekts mit Standardschaltflächen zum Bestätigen und Abbrechen.

#### JColorChooser-Objekte als spezielle Komponenten

Neben der statischen Methode `showDialog(…)` lässt sich auch der Konstruktor nutzen, um ein JColorChooser als spezielles JComponent-Objekt aufzubauen. Das bringt den Vorteil mit sich, dass die Farbauswahl nicht zwingend in einem eigenständigen Dialog stattfinden muss, sondern dass im Fall einer Komponente diese zusammen mit anderen Komponenten auf einen Container gesetzt werden kann. Änderungen an der Auswahl registriert ein ChangeListener, der etwa so angewendet wird:

```java
chooser.getSelectionModel().addChangeListener( new ChangeListener() {
   @Override public void stateChanged( ChangeEvent e ) {
     Color c = ((ColorSelectionModel) e.getSource()).getSelectedColor();
   }
 } );
```

Weitere Beispiele finden sich unter <http://www.java2s.com/Code/Java/Swing-JFC/Color-Chooser.htm>. Wie ein neuer Reiter mit über 50 Schattierungen in der Graustufenanzeige eingebracht wird, zeigt etwa .

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Inselraus: Die Windows-Optik von Swing mit JGoodies Looks verbessern](https://tutego.de/blog/javainsel/2015/11/inselraus-windows-optik-swing-jgoodies-looks.md)
- Next: [Inselraus: Swings JRootPane und JDesktopPane](https://tutego.de/blog/javainsel/2015/11/inselraus-swing-jrootpane-jdesktoppane.md)
