button[currRow][currCol].setBackground(Color.RED);
button[currRow][currCol].setContentAreaFilled(true);
button[currRow][currCol].setOpaque(true);


这就是我现在的四连网游戏,代表红色球员的举动。

java - 如何在Java中更改实际JButton的颜色?不是背景,不是文字-LMLPHP

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

最佳答案

这是不容易实现的。问题在于,可插入的外观会绘制按钮内容,并且会以其认为合适的方式进行绘制。例如,某些L&F可能会绘制不使用背景色的渐变。

对于像您这样的情况,我建议您使用自定义图像(JButton.setIcon())而没有内容区域(JButton.setContentAreaFilled(false))。

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

07-24 18:28