Java 在禁用按钮上显示图像,图像是否为灰色?
我正在用JavaSWT编写一个程序,它可以播放tic-tac-toe,如果不使用button.setImage(image)方法,我无法找到在按钮上显示带有x或o的图像的方法。当我这样做时,图像会变成灰色,我不希望这样。当我点击按钮时,有没有办法使按钮变为禁用状态,并且图像显示在其上方,或者我至少可以使按钮在禁用时不变灰 还应该注意的是,我在GUI中使用SWT 以下是我遇到问题的代码部分(如果有帮助):Java 在禁用按钮上显示图像,图像是否为灰色?,java,image,button,swt,Java,Image,Button,Swt,我正在用JavaSWT编写一个程序,它可以播放tic-tac-toe,如果不使用button.setImage(image)方法,我无法找到在按钮上显示带有x或o的图像的方法。当我这样做时,图像会变成灰色,我不希望这样。当我点击按钮时,有没有办法使按钮变为禁用状态,并且图像显示在其上方,或者我至少可以使按钮在禁用时不变灰 还应该注意的是,我在GUI中使用SWT 以下是我遇到问题的代码部分(如果有帮助): public static void drawX(Button b, Shell s, Im
public static void drawX(Button b, Shell s, Image x){ //draws an X image
int topLeft_X=b.getLocation().x;
int topLeft_Y=b.getLocation().y;
GC gc = new GC(b);
gc.drawImage(x, topLeft_X, topLeft_Y);
}
public static void drawO(Button b, Shell s, Image o){ //draws an O image
int topLeft_X=b.getLocation().x;
int topLeft_Y=b.getLocation().y;
GC gc = new GC(b);
gc.drawImage(o, topLeft_X, topLeft_Y);
}
static double turnCount = 1;
public static void button(final Button b, final Shell s, final int i, final int j, final Image g, final Image h){ //the method that would make the image appear
b.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
b.setEnabled(false);
turnCount++;
if(p1()){
a[i][j]++;
drawX(b, s, g);
b.setVisible(false);
}
else{
a[i][j]--;
drawX(b, s, h);
b.dispose();
}
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
请参阅。而不是使用Button.setEnabled(布尔值),无论何时要启用/禁用按钮,都可以筛选按钮显示上的事件 按钮.getDisplay().addFilter(事件类型,侦听器); getDisplay().removeFilter(eventType,listener)强>
如果要禁用/启用按钮,请添加/删除鼠标事件和键盘事件上的筛选器。为什么不将按钮放入具有FillLayout的组合中,而不是禁用按钮,禁用父组合。按钮看起来已启用,但鼠标单击和选项卡遍历将无法到达该按钮
警告:用户看到无法单击的已启用按钮可能会感到恼火,但这正是您所要求的。可能有一种方法可以做到这一点,我不知道,但另一种方法是删除/隐藏按钮,并在其位置放置一个
JLabel
。+1。我以前可能提到过这一点,但您是否可以编辑和更改显示为您的姓名/nic的“监狱号码”。去做别的(非冒犯性的)事?很难用数字来跟踪用户(好吧,这是我想要的,但是对于这个项目,我正在使用SWT,这是我没有在我的原始帖子中澄清的错误。你知道SWT中是否有类似的功能吗?“我有点喜欢我的匿名性”很公平,但“毛茸茸的兔子”或“冥王星”或“匿名性”也一样..匿名。(我只是说…)