Swing Swatches vom JColorChooser als Icon für JButton benutzen

Burny91

Mitglied
Hallo Leute :),

setze mich gerade mit dem JColorChooser auseinander. In dem Galileo Comupting Java gibt es ein SwingSet3 im Kapitel 16.1.1 SwingSet3 welches man downlaoden muss. Man öffnet dies. Geht zum Punkt Chooser -> JColorChooser. Dort sieht man eine Animation. Über dieser sind vier Buttons mit farbigen Icons. Diese repräsentieren die aktuelle Farbe eines Teils der Animation. Wenn man einen Button anklickt kann man mittels JColorChooser die Farbe ändern. Nun ist meine Frage wie bekomm ich die Swatches (das sind die Farben welche man auswählen kann) als Icon für einen JButton. Hab mir den Code der dabeisteht schon angeschaut, aber verstehen tue ich das nicht. :bahnhof:

Die SourceCodeDateien stehen unter der Animation: ColorChooserDemo.java

Meine Tests mit den Swatches:

Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class JColorChooserDemo {
	
	public static void main (String[] args){
		
		final JFrame frame = new JFrame("JColorChooserDemo");	
		final JPanel p = new JPanel();
		final JTextField tf = new JTextField();
		
		JButton SWButton = new JButton("JColorChooserButton");
		SWButton.setToolTipText("Changes the Background of the Panel beneath!");
		
		SWButton.addActionListener( new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				Component comp = (Component) e.getSource();
				Color newColor = JColorChooser.showDialog(null, "Choose new Color", comp.getBackground());
				p.setBackground(newColor);
				
				
			}
		});
		
		frame.add(SWButton);
		
		tf.setPreferredSize(new Dimension(200, 100));
		frame.add(p);

		frame.setLayout(new GridLayout(2,1));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setLocation(800, 350);
		frame.setSize(500, 300);
		frame.setVisible(true);
		frame.setTitle("Swatch-Test");
	}
}

Zurzeit ist es nur ein Frame mit einem JButton womit ich die Hintergrundfarbe des Panel darunter ändern kann. Mein Ziel ist es wie im Demo Beispiel ein Icon mit der aktuellen Farbe des Panel im JButton zu bekommen.

Hoffe auf baldige Hilfe

Mit freundlichen Grüßen

Burny
 

XHelp

Top Contributor
Naja...
[JAVA=30]
Color newColor = JColorChooser.showDialog(null, "Choose new Color", comp.getBackground());
[/code]
Hiermit bekommst du die Auswahl-Farbe zurück. Dann kannst du dir ja ein Icon-Objekt basteln, welches ein Icon mit deiner Farbe erstellt und mit
Code:
btn.setIcon(Icon)
es deinem Button zuweisen
 

Burny91

Mitglied
Naja...
[JAVA=30]
Color newColor = JColorChooser.showDialog(null, "Choose new Color", comp.getBackground());
[/code]
Hiermit bekommst du die Auswahl-Farbe zurück. Dann kannst du dir ja ein Icon-Objekt basteln, welches ein Icon mit deiner Farbe erstellt und mit
Code:
btn.setIcon(Icon)
es deinem Button zuweisen

Java:
Color newColor = JColorChooser.showDialog(null, "Choose new Color", comp.getBackground());
				//p.setBackground(newColor);
				Icon defaultIcon = new Icon(newColor);
				SWButton.setIcon(defaultIcon);

Wie kann ich denn ein neues Icon-Objekt mit genau der ausgewählten Farben erstellen? Hab das nur mit Bildern gemacht :(
 

Burny91

Mitglied
Sauber funktioniert alles wie ich es will hier der Code:

Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
 
public class JColorChooserDemo {
    
    public static void main (String[] args){
        
        final JFrame frame = new JFrame("JColorChooserDemo");   
        final JPanel p = new JPanel();
        final JTextField tf = new JTextField();
        
        final JButton SWButton = new JButton("JColorChooserButton");
        SWButton.setToolTipText("Changes the Background of the Panel beneath!");
        SWButton.setIcon(new ColorIcon(Color.RED));
        p.setBackground(Color.RED);
        
        SWButton.addActionListener( new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                Component comp = (Component) e.getSource();
                Color newColor = JColorChooser.showDialog(null, "Choose new Color", comp.getBackground());
                SWButton.setIcon(new ColorIcon(newColor));
                p.setBackground(newColor);
                
                
            }
        });
        
        frame.add(SWButton);
        
        tf.setPreferredSize(new Dimension(200, 100));
        frame.add(p);
 
        frame.setLayout(new GridLayout(2,1));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocation(800, 350);
        frame.setSize(200, 100);
        frame.setVisible(true);
        frame.setTitle("Swatch-Test");
    }
}


import javax.swing.*;  
import java.awt.*;  
  
public class ColorIcon implements Icon  
{  
    private static int HEIGHT = 14;  
    private static int WIDTH = 14;  
  
    private Color color;  
  
    public ColorIcon(Color color)  
    {  
        this.color = color;  
    }  
  
    public int getIconHeight()  
    {  
        return HEIGHT;  
    }  
  
    public int getIconWidth()  
    {  
        return WIDTH;  
    }  
  
    public void paintIcon(Component c, Graphics g, int x, int y)  
    {  
        g.setColor(color);  
        g.fillRect(x, y, WIDTH - 1, HEIGHT - 1);  
  
        g.setColor(Color.black);  
        g.drawRect(x, y, WIDTH - 1, HEIGHT - 1);  
    }  
}

Vielen vielen Dank für die Hilfe :applaus:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing JColorChooser für die JToggleButtons AWT, Swing, JavaFX & SWT 5
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6
A Swing JColorChooser's Icon will nicht getauscht werden. AWT, Swing, JavaFX & SWT 10
S Swing JColorChooser Font ändern AWT, Swing, JavaFX & SWT 2
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
B Swing JColorChooser verstehen AWT, Swing, JavaFX & SWT 41
B JColorChooser - Locale setzen AWT, Swing, JavaFX & SWT 3
Y JColorChooser verwenden AWT, Swing, JavaFX & SWT 8
F JColorChooser NICHT im Dialog AWT, Swing, JavaFX & SWT 12
T JColorChooser abbrechen... AWT, Swing, JavaFX & SWT 2
D "JFontDialog" analog JColorChooser AWT, Swing, JavaFX & SWT 4
C open source JColorChooser? AWT, Swing, JavaFX & SWT 2
DeeDee0815 JColorChooser PreviewComponent AWT, Swing, JavaFX & SWT 6
T mouse-event auf jcolorchooser AWT, Swing, JavaFX & SWT 2
S JColorChooser Prob mit Ok/Abbr. AWT, Swing, JavaFX & SWT 3
G Thread und JColorChooser? AWT, Swing, JavaFX & SWT 11
B Event bei JColorChooser AWT, Swing, JavaFX & SWT 3
D jcolorchooser - lost focus AWT, Swing, JavaFX & SWT 2
G Alternative zum JColorChooser AWT, Swing, JavaFX & SWT 4
G Ikonli in Fat-Jar mit mehreren Icon-Packs einbinden AWT, Swing, JavaFX & SWT 5
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
krgewb Swing Icon von Button AWT, Swing, JavaFX & SWT 12
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
U AWT Smoother Icon AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D Icon in Menuitem einfügen AWT, Swing, JavaFX & SWT 8
C Icon in der Spaltenüberschrift AWT, Swing, JavaFX & SWT 1
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
C JavaFX Application -Icon wird falsch dargestellt AWT, Swing, JavaFX & SWT 7
J JavaFX TextArea dynamisch Icon im Background anzeigen AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
D JavaFX - MenuItem mit Icon AWT, Swing, JavaFX & SWT 1
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
H Javafx - Menuitem - Icon AWT, Swing, JavaFX & SWT 4
J JComboBox Dropdown Icon AWT, Swing, JavaFX & SWT 2
vodkaz JButtonz Icon&Background AWT, Swing, JavaFX & SWT 3
B Windowbuilder - Icon für Button einbinden AWT, Swing, JavaFX & SWT 2
B Icon AWT, Swing, JavaFX & SWT 5
E Swing JFrame Icon AWT, Swing, JavaFX & SWT 3
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
J Icon vor Button AWT, Swing, JavaFX & SWT 7
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
S Würfelanimation icon updaten AWT, Swing, JavaFX & SWT 8
S JButton -> Text über Icon AWT, Swing, JavaFX & SWT 4
M Swing DoubleBuffer mit Icon AWT, Swing, JavaFX & SWT 3
TiME-SPLiNTER JLabel mit Icon & JFrame Resize AWT, Swing, JavaFX & SWT 5
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
X Icon in JTable abbilden AWT, Swing, JavaFX & SWT 10
M Icon wird bei externen Jar nicht angezeigt AWT, Swing, JavaFX & SWT 2
L toggel icon in jtable AWT, Swing, JavaFX & SWT 3
kodela Swing Icon in der Titelleiste "festnageln" AWT, Swing, JavaFX & SWT 6
G JLabel Icon Pfeilform AWT, Swing, JavaFX & SWT 14
S JCheckBoxMenuItem - Haekchen verschwindet bei Icon AWT, Swing, JavaFX & SWT 3
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
algorismi JInternalframe Icon AWT, Swing, JavaFX & SWT 14
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Icon für Fenster AWT, Swing, JavaFX & SWT 5
M Prozess-Icon im Prozessmanager AWT, Swing, JavaFX & SWT 8
W Swing Button mit Icon AWT, Swing, JavaFX & SWT 3
S svg Icon für Button (Batik Problem?) AWT, Swing, JavaFX & SWT 3
C Swing JToggleButton und Icon AWT, Swing, JavaFX & SWT 2
S JTree - Knoten mit animiertem GIF/Icon AWT, Swing, JavaFX & SWT 5
S vector Icon AWT, Swing, JavaFX & SWT 3
C LayoutManager Icon Einfügen? AWT, Swing, JavaFX & SWT 6
N Icon für Button wird nicht gefunden AWT, Swing, JavaFX & SWT 11
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
K LookAndFeel JTabbedPane mit Icon und CloseButton AWT, Swing, JavaFX & SWT 2
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
F Problem beim Positionieren von Icon und Text in Button AWT, Swing, JavaFX & SWT 2
R JTable mit Column die Icon und Integer enthält? AWT, Swing, JavaFX & SWT 3
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
J Icon einer JCheckBox AWT, Swing, JavaFX & SWT 6
D Swing Anwenungs Icon AWT, Swing, JavaFX & SWT 8
A Swing JTable Icon nur in einer Zelle AWT, Swing, JavaFX & SWT 2
R JTable Header - will links kleines icon hinzufuegen..? AWT, Swing, JavaFX & SWT 6
J Swing JToolBar Button mit Icon AWT, Swing, JavaFX & SWT 4
V [Swing] Overlay Icon AWT, Swing, JavaFX & SWT 5
K Schachbrett / Icon / JButton AWT, Swing, JavaFX & SWT 7
T Abbrechen-Icon entfernen AWT, Swing, JavaFX & SWT 4
S Buttons mit großen Icon AWT, Swing, JavaFX & SWT 7
klattiator Icon und Button zum Schließen in einem Tab AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben