{"id":3245,"date":"2015-11-25T19:46:37","date_gmt":"2015-11-25T17:46:37","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=3245"},"modified":"2015-11-25T19:46:37","modified_gmt":"2015-11-25T17:46:37","slug":"inselraus-swing-farbauswahldialog-jcolorchooser","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2015\/11\/inselraus-swing-farbauswahldialog-jcolorchooser\/","title":{"rendered":"Inselraus: Swings Farbauswahldialog JColorChooser"},"content":{"rendered":"<p>Mit einem JColorChooser lassen sich Farben \u00fcber drei unterschiedliche Reiter ausw\u00e4hlen. Der Benutzer hat die Auswahl zwischen vordefinierten Farben, HSB-Werten und RGB-Werten. Um den Farbauswahldialog auf den Bildschirm zu bekommen, gen\u00fcgt 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\u00fcckgabewert die ausgew\u00e4hlte Farbe geliefert. Wird der Dialog abgebrochen, so ist der R\u00fcckgabewert null:<\/p>\n<pre>JFrame\u00a0f\u00a0=\u00a0new\u00a0JFrame();\r\n f.setDefaultCloseOperation(\u00a0JFrame.EXIT_ON_CLOSE\u00a0);\r\n JButton\u00a0b\u00a0=\u00a0new\u00a0JButton(\u00a0\"Farbe\u00a0\u00e4ndern\"\u00a0);\r\n f.add(\u00a0b\u00a0);\r\n b.addActionListener(\u00a0new\u00a0ActionListener()\u00a0{\r\n \u00a0\u00a0@Override\u00a0public\u00a0void\u00a0actionPerformed(\u00a0ActionEvent\u00a0e\u00a0)\u00a0{\r\n \u00a0\u00a0\u00a0Component\u00a0comp\u00a0=\u00a0(Component)\u00a0e.getSource();\r\n \u00a0\u00a0\u00a0Color\u00a0newColor\u00a0=\u00a0JColorChooser.showDialog(\u00a0null,\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"W\u00e4hle\u00a0neue\u00a0Farbe\",\r\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0comp.getBackground()\u00a0);\r\n \u00a0\u00a0\u00a0comp.setBackground(\u00a0newColor\u00a0);\r\n \u00a0}\r\n }\u00a0);\r\n f.pack();\r\n f.setVisible(\u00a0true\u00a0);<\/pre>\n<p>Den Aufruf mit showDialog(\u2026) einzuleiten, ist nicht der einzige Weg. Wir k\u00f6nnen auch den Konstruktor nutzen und dieses Exemplar sp\u00e4ter mit JColorChooser.createDialog(\u2026) \u00fcbergeben und anzeigen.<\/p>\n<p>class\u00a0javax.swing.JColorChooser<br \/>\nextends\u00a0JComponent\u00a0implements\u00a0Accessible<\/p>\n<ul>\n<li>JColorChooser()<br \/>\nErzeugt einen neuen Farbauswahldialog.<\/li>\n<li>JColorChooser(Colorc)<br \/>\nErzeugt einen neuen Farbauswahldialog mit einer vordefinierten Farbe.<\/li>\n<li>staticColorshowDialog(Componentc,Stringtitle,ColorinitialColor)<br \/>\nZeigt einen modalen Farbauswahldialog.<\/li>\n<li>staticJDialogcreateDialog(Componentc,Stringtitle,booleanmodal,<br \/>\nJColorChooser chooserPane, ActionListener okLis, ActionListener cancelLis)<br \/>\nErzeugt einen neuen Dialog aufgrund des JColorChooser-Objekts mit Standardschaltfl\u00e4chen zum Best\u00e4tigen und Abbrechen.<\/li>\n<\/ul>\n<h4>JColorChooser-Objekte als spezielle Komponenten<\/h4>\n<p>Neben der statischen Methode showDialog(\u2026) l\u00e4sst 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\u00e4ndigen Dialog stattfinden muss, sondern dass im Fall einer Komponente diese zusammen mit anderen Komponenten auf einen Container gesetzt werden kann. \u00c4nderungen an der Auswahl registriert ein ChangeListener, der etwa so angewendet wird:<\/p>\n<pre>chooser.getSelectionModel().addChangeListener(\u00a0new\u00a0ChangeListener()\u00a0{\r\n \u00a0\u00a0@Override\u00a0public\u00a0void\u00a0stateChanged(\u00a0ChangeEvent\u00a0e\u00a0)\u00a0{\r\n \u00a0\u00a0\u00a0\u00a0Color\u00a0c\u00a0=\u00a0((ColorSelectionModel)\u00a0e.getSource()).getSelectedColor();\r\n \u00a0\u00a0}\r\n }\u00a0);<\/pre>\n<p>Weitere Beispiele finden sich unter http:\/\/www.java2s.com\/Code\/Java\/Swing-JFC\/Color-Chooser.htm. Wie ein neuer Reiter mit \u00fcber 50 Schattierungen in der Graustufenanzeige eingebracht wird, zeigt etwa <a href=\"http:\/\/www.java2s.com\/Code\/Java\/Swing-JFC\/JColorChooserdialogwiththecustomGrayScalePanelpickertab.htm\">http:\/\/www.java2s.com\/Code\/Java\/Swing-JFC\/JColorChooserdialogwiththecustomGrayScalePanelpickertab.htm<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit einem JColorChooser lassen sich Farben \u00fcber drei unterschiedliche Reiter ausw\u00e4hlen. Der Benutzer hat die Auswahl zwischen vordefinierten Farben, HSB-Werten und RGB-Werten. Um den Farbauswahldialog auf den Bildschirm zu bekommen, gen\u00fcgt 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-3245","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=3245"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3245\/revisions"}],"predecessor-version":[{"id":3246,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3245\/revisions\/3246"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=3245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=3245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=3245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}