2015-09-15 6 views
5

Jak zmienić kolor JButton, jeśli używam JGoodies WindowsLookAndFeel? Po zmianie koloru przycisk powinien nadal mieć pewne wizualne wskazanie po kliknięciu; gradient koloru i animacja kliknięć nie muszą być takie same jak w JGoodies.Zmiana koloru JButton w JGoodies WindowsLookAndFeel

Korzystanie setBackground() i setForeground() zmienia się tylko kolor przycisku zarysie i przycisk tekst:

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

chciałbym ustawić kolor dla całego obszaru przycisku nie tylko zarys. (Dzieje się tak, jeśli WindowsLookAndFeel nie jest używany.)

Próbowałem również zmienić kolory w com.jgoodies.looks.windows.WindowsBorders#getButtonBorder(), ale wydaje się, że nie ma to żadnego wpływu.

+0

co okna wersji używasz? – Vovka

+0

Używam systemu Windows 8 –

Odpowiedz

1

spróbuj dodać wywołanie setContentAreaFilled:

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

czy można zastąpić JButton i farby: Change JButton gradient color, but only for one button, not all

+0

Jest to bardzo zbliżone do tego, co chcę (kolor pojawia się poprawnie), ale nie uzyskuję wizualnego wskazania kliknięć podczas używania 'WindowsLookAndFeel' (robię, gdy używam domyślnego wyglądu i stylu). –

+0

Przyznawana nagroda, ponieważ nie dodałem zastrzeżeń wizualnych do czasu, gdy zacząłem nagrodę. –

+0

Sry, nie ma czasu na badania i testy teraz. Oto niektóre punkty początkowe: 0) http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4880747; 1) utwórz własny ButtonUI http://stackoverflow.com/questions/5751311/creating-a-ustom-button-in-java-with-jbutton/5755124#5755124; 2) http://stackoverflow.com/questions/15043218/jbutton-background-images?rq=1; 3) używaj obrazów jako tła http://stackoverflow.com/a/11931487/5379032 4) WindowsXP - Twój kod działa poprawnie, bez problemu. Win8 - problem. Win7 nie testowany. – Vovka