Die Farbe von JButton beim Klicken ändern?

Status
Nicht offen für weitere Antworten.
L

Lars Erik #85

Gast
Bin gerade dabei ein kleines Tool mit Swing Oberfläche zu programmieren und jetzt stehe ich vor einem kleinen Problem.

Beim Klicken eines JButton ändert sich dessen Farbe wärend der Klick-Dauer nun möchte ich geren diese Farbe definieren und finde einfach nicht heraus wie.

Bitt helft mir.

Gruß Lars Erik!
 
M

Mewel

Gast
wenn ich deine Frage richtig verstanden habe müsste die Lösung etwa so aussehen.

JButton b = new JButton("name");

b.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
((JButton)e.getSource()).setBackgroundColor(Color.RED);
}
)
 
L

Lars Erik #85

Gast
Leider war das nicht ganz die Lösung.

Deine Lösung verändert die Farbe des Buttons nach dem Klicken nicht wärend das Klickens.

Ich werde mein Problem nochma etwas genauer beschreiben:

Ich habe einen JButton erstellt

Code:
JButton bCalc = new JButton("Berechnen");
und dann die Farbe geändert

Code:
bCalc.setBackground(fgColor);

und dann dem Container hinzugefügt

Code:
container.add(bCalc);


Nun zu meinem Problem wenn ich auf den Button Klicke und die Mouse gedrückt halte verändert sich die Farbe das Buttons in eine upassendes Grau. Wenn ich die Maus wieder los lasse bekommt der Button die von mir festgelegte Farbe zurück.
Ich möchte jetzt gerne die Farbe die der Button wärend das Klickens annimmt in ein schönes Braun verwandeln damit mein gesamtbild wieder passt.

GRuß Lars Erik!
 

André Uhres

Top Contributor
Code:
//package schnipsel2;
/*
 * ColorizedButton.java
 */
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
/**
 * @author  Leif Samuelsson  
 * Swing Engineer, Sun Microsystems  
 * Santa Clara, CA, USA  
 * [url]http://forum.java.sun.com/thread.jspa?threadID=430926&start=15&tstart=0[/url]
 */

public class ColorizedButton extends JButton {
    private static ColorizeImageFilter imageFilter = new ColorizeImageFilter();
    
    private Color color;
    
    public ColorizedButton(String title, Color color) {
        super(title);
        this.color = color;
    }
    
    public void paintComponent(Graphics g) {
        boolean opaque = isOpaque();
        if (opaque) {
            // Fill background
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
        }
        
        // Let the UI paint to offscreen image
        setOpaque(false);
        Image img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
        Graphics g2 = img.getGraphics();
        g2.setFont(g.getFont());
        super.paintComponent(g2);
        
        // Colorize!
        img = imageFilter.colorize(this, img, color);
        
        // Paint offscreen image to button
        g.drawImage(img, 0, 0, null);
        setOpaque(opaque);
    }
    
    private static class ColorizeImageFilter extends RGBImageFilter {
        double cr, cg, cb;
        int bgRGB, fgRGB;
        
        public ColorizeImageFilter() {
            canFilterIndexColorModel = true;
        }
        
        public Image colorize(JComponent comp, Image fromImage, Color c) {
            cr = c.getRed()   / 255.0;
            cg = c.getGreen() / 255.0;
            cb = c.getBlue()  / 255.0;
            bgRGB = comp.getBackground().getRGB();
            fgRGB = comp.getForeground().getRGB();
            ImageProducer producer = new FilteredImageSource(fromImage.getSource(), this);
            return new ImageIcon(comp.createImage(producer)).getImage();
        }
        
        public int filterRGB(int x, int y, int rgb) {
            int alpha = rgb & 0xff000000;
            
            if (rgb == bgRGB || rgb == fgRGB || alpha < 0x80000000) {
                return rgb;
            }
            
            // Assume all rgb values are shades of gray
            double grayLevel = 2 * (rgb & 0xff) / 255.0;
            double r, g, b;
            
            if (grayLevel <= 1.0) {
                r = cr * grayLevel;
                g = cg * grayLevel;
                b = cb * grayLevel;
            } else {
                grayLevel -= 1.0;
                r = cr + (1.0 - cr) * grayLevel;
                g = cg + (1.0 - cg) * grayLevel;
                b = cb + (1.0 - cb) * grayLevel;
            }
            
            return (alpha +
                    (((int)(r * 255)) << 16) +
                    (((int)(g * 255)) << 8) +
                    (int)(b * 255));
        }
    }
    
    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        JFrame frame = new JFrame();
        Container cp = frame.getContentPane();
        cp.setLayout(new FlowLayout());
        cp.add(new ColorizedButton("Red",   Color.red));
        cp.add(new ColorizedButton("Green", Color.green));
        cp.add(new ColorizedButton("Blue",  Color.blue));
        frame.setBounds(100, 100, 200, 100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
 
L

Lars Erik #85

Gast
Ich verstehe zwar noch nicht ganz wie es funktioniert aber so etwas habe ich gesucht. Satte farben hätten es auch getan aber das mit der Grauabstufung sieht natürlich verdammt gut aus.

Ich danke dir ersteinmal!

Würde mich allerdings freuen wenn jemand noch eine Lösung hätte die den Botton einfach nur von Rot noch Blau beim Klicken verändert. Da ich denke das dies für mich leichter Verstädnlich ist.

Gruß Lars Erik!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
S Farbe von JButton ändern AWT, Swing, JavaFX & SWT 5
T Jbutton Click farbe ändern AWT, Swing, JavaFX & SWT 4
F JButton Text-Farbe bei Disabled AWT, Swing, JavaFX & SWT 2
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
D Farbe bei einem JButton wechseln AWT, Swing, JavaFX & SWT 4
H JButton Farbe verändern AWT, Swing, JavaFX & SWT 4
X JButton in MetalButtonUI Farbe ändern lassen? AWT, Swing, JavaFX & SWT 7
C Farbe eines gedrücktes JButton AWT, Swing, JavaFX & SWT 3
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6
jojoge Wie erstelle ich runde Buttons mit Farbe? AWT, Swing, JavaFX & SWT 1
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
W Farbe des Fensters AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
V LookAndFeel JSpinner Hintergrund Farbe mit Nimbus LaF AWT, Swing, JavaFX & SWT 0
X mouseover verändert ungewollt die farbe AWT, Swing, JavaFX & SWT 4
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
C AWT Wie setze ich die Farbe "leuchtetgrün"? AWT, Swing, JavaFX & SWT 4
B Swing Button Farbe AWT, Swing, JavaFX & SWT 3
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
N Farbe abziehen AWT, Swing, JavaFX & SWT 3
R Farbe von Buttons stimmt nicht AWT, Swing, JavaFX & SWT 2
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
T DefaultTableCellRenderer Farbe bestimmter Zelle ändern AWT, Swing, JavaFX & SWT 2
D JComboBox jedes Item mit einer anderen Farbe AWT, Swing, JavaFX & SWT 10
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
T JTable Zellen Farbe AWT, Swing, JavaFX & SWT 13
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
N SWT-Widgets in Farbe AWT, Swing, JavaFX & SWT 21
C Farbe eines ToolTipTextes eines Buttons AWT, Swing, JavaFX & SWT 4
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
Q 3D-Grafik Cube Farbe setzen zur Laufzeit. AWT, Swing, JavaFX & SWT 10
I Schrift und Farbe formatieren, und zwar pro Linie... AWT, Swing, JavaFX & SWT 4
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
chik Button beschriften und Farbe zufällig anordnen AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
D SWT TabItem Farbe der Schrift ändern AWT, Swing, JavaFX & SWT 3
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
O AWT Zeichne mit eigener Farbe AWT, Swing, JavaFX & SWT 3
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
O Hgr- Farbe einer JTable ändert sich nicht AWT, Swing, JavaFX & SWT 11
V JComboBox - Farbe in der Auswalliste AWT, Swing, JavaFX & SWT 7
GambaJo Farbe eines JFrames AWT, Swing, JavaFX & SWT 2
L Farbe des Auswahlrechtecks bei selektierter Tabellenzeile AWT, Swing, JavaFX & SWT 9
M JComboBox Selected-Background Farbe AWT, Swing, JavaFX & SWT 5
K Farbe eines Pixels in einem Bild AWT, Swing, JavaFX & SWT 7
I JLabel Farbe AWT, Swing, JavaFX & SWT 1
L wie setze ich die Farbe des Pfeils in einer JComboBox? AWT, Swing, JavaFX & SWT 5
G Farbe der Markierung einer Componente ändern AWT, Swing, JavaFX & SWT 2
G JOptionPane mit andere Farbe AWT, Swing, JavaFX & SWT 8
G JFrame und Farbe AWT, Swing, JavaFX & SWT 4
M Farbe eines strings in JTextArea AWT, Swing, JavaFX & SWT 2
J JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 2
F Farbe für den Hintergrund eine BorderLayout-Teils AWT, Swing, JavaFX & SWT 5
G Bild mit transparente farbe für den IE6 AWT, Swing, JavaFX & SWT 5
G Farbe ändern bei Klick auf einen Kreis AWT, Swing, JavaFX & SWT 5
B transparente Farbe AWT, Swing, JavaFX & SWT 3
N Die Zeile einer JTable verändert beim klicken ihre Farbe? AWT, Swing, JavaFX & SWT 7
G Bild a auf Bild b, bestimmte Farbe (zb Weiß) durchsichtig AWT, Swing, JavaFX & SWT 7
G JTable Zeile mit Farbe füllen AWT, Swing, JavaFX & SWT 2
I Farbe aus einem Icon herauslesen AWT, Swing, JavaFX & SWT 5
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
E Spalten Farbe ändern AWT, Swing, JavaFX & SWT 3
J Cell Farbe in JTable AWT, Swing, JavaFX & SWT 31
U Farbe von Kreis AWT, Swing, JavaFX & SWT 3
B JFrame Farbe ändern AWT, Swing, JavaFX & SWT 15
J Auf Button - Druck soll Rechteck Farbe verändern AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben