如何在Java中更改实际JButton的颜色?不是背景,也不是文本

如何在Java中更改实际JButton的颜色?不是背景,也不是文本,java,swing,jbutton,fill,Java,Swing,Jbutton,Fill,这就是我现在在“连接四号”游戏中看到的红色球员的移动 目前,它只会给背景上色,如果我将代码改为button[currRow][currCol].setForeground(Color.RED),那么整个事情似乎不会改变。我该如何解决这个问题?这不容易实现。问题在于,可插拔的外观描绘了按钮内容,并且它以它认为合适的任何方式这样做。例如,某些L&F可能会绘制不使用背景色的渐变 我建议像您这样的案例使用自定义图像(JButton.setIcon())和无内容区域(JButton.setContent

这就是我现在在“连接四号”游戏中看到的红色球员的移动


目前,它只会给背景上色,如果我将代码改为button[currRow][currCol].setForeground(Color.RED),那么整个事情似乎不会改变。我该如何解决这个问题?

这不容易实现。问题在于,可插拔的外观描绘了按钮内容,并且它以它认为合适的任何方式这样做。例如,某些L&F可能会绘制不使用背景色的渐变

我建议像您这样的案例使用自定义图像(
JButton.setIcon()
)和无内容区域(
JButton.setContentAreaFilled(false)


或者,您可以创建一个自定义组件来绘制元素本身,覆盖
JComponent.paintComponent()

尝试使用
setContentAreaFilled(false)
;作为一个
button[currRow][currCol].setBackground(Color.RED);
button[currRow][currCol].setContentAreaFilled(true);
button[currRow][currCol].setOpaque(true);