2010-11-13 9 views
11

Poniżej znajduje się kod, który tworzy 9 przycisków w formie gridlayout na określonym panelu3. Chcę tylko, aby tło każdego przycisku było czarne z szarym tekstem nad nim. Czy ktoś może pomóc?Jak ustawić kolor tła przycisku w języku Java GUI?

for(int i=1;i<=9;i++) 
{ 
    p3.add(new JButton(""+i)); 
} 
+5

Szczerze mówiąc, ludzie, używać IDE. Autouzupełnianie jest jednym z najlepszych sposobów uczenia się biblioteki językowej, a nazwy metod są zwykle dość oczywiste. –

+0

@DenisTulskiy dlaczego twój komentarz był konieczny? – Ungeheuer

+0

@JohnnyCoder, myślę, że byłem sfrustrowany i to był mój sposób na powiedzenie rtfm. Nadal uważam, że to dobra rada, choć :) –

Odpowiedz

16

Zapoznaj się z dokumentacją JButton. Zwróć szczególną uwagę na metody setBackground i setForeground odziedziczone po JComponent.

Coś jak:

for(int i=1;i<=9;i++) 
{ 
    JButton btn = new JButton(String.valueOf(i)); 
    btn.setBackground(Color.BLACK); 
    btn.setForeground(Color.GRAY); 
    p3.add(btn); 
} 
+8

To nie działa z Java 8 na Macu. Kolor tła jest kolorem za przyciskiem. Przycisk jest następnie rysowany na czarnym tle, a przycisk jest szary z szarym tekstem. (nie można odczytać tekstu). W rzeczywistości jest gorzej ... czarne tło nie jest w ogóle rysowane, chyba że najpierw zostanie wywołane 'setOpaque (true)'. – Jason

3
for(int i=1;i<=9;i++) { 
    p3.add(new JButton(""+i) {{ 
     // initialize the JButton directly 
     setBackground(Color.BLACK); 
     setForeground(Color.GRAY); 
    }}); 
} 
1

Zastosowanie metody setBackground ustawić tło i setForeground aby zmienić kolor tekstu. Pamiętaj jednak, że umieszczenie szarego tekstu na czarnym tle może sprawić, że tekst będzie trudny do odczytania.

2

Użytkownik może, ale nie musi, użyć metody setOpaque, aby upewnić się, że kolory pojawiają się, przekazując wartość true do metody.

0

Wygląda na to, że metoda setBackground() nie działa dobrze na niektórych platformach (korzystam z systemu Windows 7). Znalazłem this answer do this question pomocne. Jednak nie wykorzystałem go w całości do rozwiązania mojego problemu. Zamiast tego zdecydowałem, że będzie dużo łatwiej i prawie tak estetycznie pokolorować panel obok przycisku.

11

Proste:

btn.setBackground(Color.red);

Aby użyć wartości RGB:

btn[i].setBackground(Color.RGBtoHSB(int, int, int, float[]));

+1

Lubię używać btn.setBackground (New Color (int, int, int)); dla wartości RGB –

1

Zmienianie właściwości tła może nie wystarczyć jako składnik nie będzie wyglądać jak przycisk więcej. Może być konieczne ponowne wdrożenie metody farby jak w here aby uzyskać lepszy wynik:

enter image description here

Powiązane problemy