2015-09-15 22 views
5

Wie ändere ich die Farbe eines JButton, wenn ich JGoodies verwende? Nach dem Ändern der Farbe sollte der Knopf noch eine visuelle Anzeige haben, wenn er angeklickt wird; Der Farbverlauf und die Klick-Animation müssen nicht mit denen in JGoodies identisch sein.Ändern Sie die Farbe eines JButton in JGoodies WindowsLookAndFeel

Mit setBackground() und setForeground() ändert nur die Farbe der Schaltfläche Umriss und die Schaltfläche Text:

import com.jgoodies.looks.windows.WindowsLookAndFeel; 
... 

public class Test { 
    public static void main(String[] args) throws UnsupportedLookAndFeelException { 
     UIManager.setLookAndFeel(new WindowsLookAndFeel()); 

     JFrame frame = new JFrame(); 
     frame.setSize(50, 100); 
     JButton button = new JButton("Button"); 
     button.setBackground(Color.GREEN); 
     button.setForeground(Color.RED); 
     button.setOpaque(true); 
     frame.add(button); 
     frame.setVisible(true); 
    } 
} 

enter image description here

Ich möchte die Farbe für den gesamten Bereich der Taste, um nicht nur die Gliederung. (Dies passiert, wenn die WindowsLookAndFeel nicht verwendet wird.)

Ich habe auch versucht, die Farben in com.jgoodies.looks.windows.WindowsBorders#getButtonBorder() zu ändern, aber das scheint keine Wirkung zu haben.

+0

welche Windows-Version verwenden Sie? – Vovka

+0

Ich verwende Windows 8 –

Antwort

1

Versuchen Hinzufügen Aufruf setContentAreaFilled:

button.setContentAreaFilled(false); //must be before setOpaque 
button.setOpaque(true); 

oder Sie können JButton und Farbe außer Kraft setzen: Change JButton gradient color, but only for one button, not all

+0

Das ist ziemlich nah an dem, was ich will (die Farbe zeigt richtig), aber ich bekomme keine visuelle Anzeige von Klicks bei der Verwendung von 'WindowsLookAndFeel' (ich tun, wenn Sie das Standard-Look and Feel verwenden). –

+0

Verliehen wurde die Prämie, da ich die visuellen Indikationsbestimmungen erst hinzufügte, nachdem ich das Kopfgeld begonnen hatte. –

+0

Sry, habe keine Zeit für Forschung und Test jetzt. Hier einige Startpunkte: 0) http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4880747; 1) erstellen Sie Ihre eigenen ButtonUI http://StackOverflow.com/Questions/5751311/Creating-Acustom-Button-in-JavaWith-Jbutton/5755124#5755124; 2) http://stackoverflow.com/questions/15043218/jbutton-background-images?rq=1; 3) Bilder als Hintergrund verwenden http://StackOverflow.com/a/11931487/5379032 4) WindowsXP - Ihr Code funktioniert korrekt, kein Problem. Win8 - Problem. Win7 nicht getestet. – Vovka