2017-01-29 18 views
0
button[currRow][currCol].setBackground(Color.RED); 
button[currRow][currCol].setContentAreaFilled(true); 
button[currRow][currCol].setOpaque(true); 

Это то, что у меня есть прямо сейчас для моей четырехярусной игры, чтобы обозначить движение красного игрока.Как изменить цвет фактического JButton в Java? Не фон, а не текст

https://i.stack.imgur.com/E12ZI.png

На данный момент, это только окрашивает фон и если я изменить код кнопки [currRow] [currCol] .setForeground (Color.RED), то все это просто, кажется, не изменится. Как я могу это исправить?

+1

Попробуйте использовать 'setContentAreaFilled (false)'; как [немного более продвинутый пример] (http://stackoverflow.com/questions/14635952/java-layout-proportions-creating-a-scalable-square-panel/14636828#14636828) – MadProgrammer

ответ

1

Это нелегко достижимо. Проблема заключается в том, что привлекательный внешний вид и окрашивание содержимого кнопки, и делает это так, как он считает нужным. Например, некоторые L & F могут рисовать градиент, который не использует цвет фона.

Я предлагаю использовать такой пользовательский образ (JButton.setIcon()) и без области содержимого (JButton.setContentAreaFilled(false)).

В качестве альтернативы вы можете создать пользовательский компонент, который рисует сам элемент, переопределяя JComponent.paintComponent().