我是 Java 新手,需要一些帮助。 我正在制作一个小的 Java 桌面应用程序,其中我基本上有 4 个 JButton 的网格(2 x 2 网格),我需要更改各个 JButton 的背景颜色,并在一秒钟后变回原始颜色(我想做的游戏就像西蒙,你必须按照一种按钮模式来点亮)。 我有一个包含 1 到 4 范围内随机生成的数字的 vector ,我希望能够从 vector 中获取每个元素并让相应的按钮在一秒钟内变为不同的颜色(例如,如果 vector 包含 2 4 1,我希望按钮 2 发生变化,然后按钮 4 发生变化,然后按钮 1 发生变化)。
这是可能的还是有更好的方法来使用 JButtons 以外的东西来做到这一点?我该如何实现?
此外,我正在运行 Mac OS X,显然(基于我在论坛上阅读的一些内容)不喜欢 JButtons 背景更改(我认为这是因为系统外观),我该如何更改这样就可以在 Mac 上运行了吗?
提前感谢您的帮助:)
最佳答案
一种方法是扩展 JToggleButton
并覆盖 paintComponent()
以显示颜色。 javax.swing.Timer
可以控制计时。这是一个更详细的 example .
private static class SimonButton extends JToggleButton {
private final Color color;
Dimension size = new Dimension(100, 100);
public SimonButton(Color color) {
this.color = color;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (this.isSelected()) {
g.setColor(color);
} else {
g.setColor(Color.lightGray);
}
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
@Override
public Dimension getPreferredSize() {
return size;
}
}
关于java - 临时更改 JButton 背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464901/