我正在为一个学校项目做扫雷。当玩家获胜或失败时,地雷将被揭露。他们的按钮被禁用,标志/地雷的图标将出现。问题是禁用按钮时图标变为灰色。有办法解决这个问题吗?
我也尝试将JButton
的文字设置为"<html><img src=\"res\\mine.png\"/></html>"
,但它显示了一些奇怪的图像。
更新:
我尝试使用setDisabledIcon()
但没有显示任何内容。这是一些伪代码
我用于雷区的按钮是一个名为Field
的类,它扩展了JButton
mouseReleased(mouseEvent e) {
Field fieldClicked = (Field)e.getSource();
if fieldClicked is mine {
fieldClicked.setEnabled(false);
gameTimer.stop();
setLost(true);
loop through 2D array of fields {
if field is a mine {
field.setDisabledIcon(Field.mineIcon);// public static final icon of Field. mineIcon = new ImageIcon("res\\mine.png")
field.setEnabled(false);
}
}
}
}
答案 0 :(得分:5)
在测试中计算出来
出于某种原因
clickedButton.setDisabledIcon(mineIcon)
独自无所作为。
可是:
clickedButton.setIcon(mineIcon)
clickedButton.setDisabledIcon(mineIcon)
将显示我想要的任何图标
答案 1 :(得分:3)
JButton实际上允许七个相关图像:主图像(使用 setIcon指定它(如果没有在构造函数中提供),图像 按下按钮时使用(setPressedIcon),要使用的图像 当鼠标结束时(setRolloverIcon,但你需要调用 setRolloverEnabled(true)first),按钮所用的图像 选中并启用(setSelectedIcon),时使用的图像 按钮被禁用(setDisabledIcon),图像使用时 选中但禁用(setDisabledSelectedIcon),以及要使用的图像 鼠标悬停在选中时 (setRolloverSelectedIcon)。 - http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JButton.html
所以请使用setDisabledIcon(ImageIcon)
答案 2 :(得分:2)
灰色图像是自动生成的图像,如果您想要不同的图标,请使用setDisabledIcon()
Icon disabledIcon = new ImageIcon("youricon.gif");
button.setDisabledIcon(disabledIcon);