我正在为一个学校项目制作扫雷。单击一个字段/按钮时,它将被禁用,并根据其拥有的邻居数量显示其邻居的颜色。我在Eclipse中正在研究这个问题。它完美地工作,我几乎准备提交它。唯一的问题是颜色在Eclipse和JCreator中运行时有效,但是当我使用.bat
/命令(java Minesweeper
)运行它时,数字显示为灰色而不是彩色。
当我调用setText()
时,我用html标签更改颜色。例如:setText("<html><font color=red>3</font></html>")
等
为什么会这样?颜色在Eclipse / JCreator中运行良好,但是当我通过cmd
或批处理脚本运行游戏时
试试这个:它对我不起作用......
在Eclipse / JCreator中编译并运行它。然后尝试使用java Test
在Eclipse / JCreator中运行时文本为红色,在脚本中运行时为灰色
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Test {
public static void main(String[] args) {
JFrame mainFrame = new JFrame("Test");
JButton testButton = new JButton("Click this");
MouseAdapter buttonListener = new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
int modifier = e.getModifiers();
JButton clicked = (JButton)e.getSource();
clicked.setForeground(Color.RED);
clicked.setText("<html><font color=red>" + clicked.getText() + "</font></html>");
clicked.setEnabled(false);
}
};
mainFrame.setMinimumSize(new Dimension(640,480));
mainFrame.getContentPane().add(testButton);
testButton.addMouseListener(buttonListener);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
}
答案 0 :(得分:3)
你必须测试JButton#isEnabled()
,例如
JButton.setText("<html><font color="
+ (bClose.isEnabled() ? "black" : "red") + ">"
+ bClose.getText() + "</font></html>");
非常好JButton#setDisabledIcon(Icon)
答案 1 :(得分:2)
原来我系统上的命令java
指向JRE 1.7.0_1而不是JRE 1.6.0_29(即使我从未将JRE 7的目录添加到PATH
变量...)。由于某种原因,这个代码在两个JRE上表现不同。在JRE 7上,文本变灰了。在JRE 6上,它的行为方式与我想要的一样,并且文本不会变灰。