2010-11-13 6 views
11

Ниже приведен код, который создает 9 кнопок в форме gridlayout на определенном pannel3. Я хочу, чтобы фон каждой кнопки черный с серым текстом над ним. Может ли кто-нибудь помочь?Как установить цвет фона кнопки в графическом интерфейсе Java?

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

Честно говоря, люди, использовать IDE. Автозаполнение - один из лучших способов изучения языковой библиотеки, а имена методов обычно довольно понятны. –

+0

@DenisTulskiy Зачем нужен ваш комментарий? – Ungeheuer

+0

@JohnnyCoder, я думаю, я был расстроен, и это был мой способ сказать rtfm. Я все еще считаю, что это хороший совет, хотя :) –

ответ

16

Оформить заявку JButton. Обратите особое внимание на методы setBackground и setForeground, унаследованные от JComponent.

Что-то вроде:

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

Это не работает с Java 8 на Mac. Цвет фона - цвет за кнопкой. Затем кнопка нарисована поверх черного фона, а кнопка серого цвета с серым текстом. (вы не можете прочитать текст). На самом деле это хуже ... черный фон вообще не нарисован, если сначала вызывается '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

Используйте метод setBackground для установки фона и setForeground изменить цвет текста. Обратите внимание, однако, что серый текст на черном фоне может сделать ваш текст немного трудным для чтения.

2

Возможно, вам понадобится метод setOpaque, чтобы убедиться, что цвета отображаются, передавая true методу.

0

Похоже, что метод setBackground() не работает на некоторых платформах (я использую Windows 7). Я нашел this answer до this question полезной. Однако я не использовал его полностью для решения моей проблемы. Вместо этого я решил, что было бы намного проще и почти эстетично раскрашивать панель рядом с кнопкой.

11

Простой:

btn.setBackground(Color.red);

Чтобы использовать значения RGB:

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

+1

Мне нравится использовать btn.setBackground (Новый цвет (int, int, int)); для значений RGB –

1

Изменение фона свойство может быть не достаточно, так как компонент не будет выглядеть как кнопка больше. Вы, возможно, потребуется повторно реализовать метод краски, как в here, чтобы получить лучший результат:

enter image description here

Смежные вопросы