Java 在Windows中更改org.eclipse.swt.widgets背景色
现在,我正试图用以下代码更改org.eclipse.swt.widgets.Button的背景色: Button sceneButton = new Button(border, SWT.TOGGLE | SWT.FLAT); sceneButton.setBackground(Color.RED); 按钮场景按钮=新按钮(边框,SWT.TOGGLE | SWT.FLAT); 背景按钮。背景(颜色。红色);Java 在Windows中更改org.eclipse.swt.widgets背景色,java,user-interface,colors,swt,Java,User Interface,Colors,Swt,现在,我正试图用以下代码更改org.eclipse.swt.widgets.Button的背景色: Button sceneButton = new Button(border, SWT.TOGGLE | SWT.FLAT); sceneButton.setBackground(Color.RED); 按钮场景按钮=新按钮(边框,SWT.TOGGLE | SWT.FLAT); 背景按钮。背景(颜色。红色); 当我在Solaris中运行该程序时,它可以正常工作,但当我在Windows中
当我在Solaris中运行该程序时,它可以正常工作,但当我在Windows中运行该代码时,它却不起任何作用。这可能吗?如果没有,是否有某种解决方法允许我在按钮中显示文本的同时更改背景颜色(即使“颜色”是图像)?谢谢 你不能。方法文件中提到:
例如,在Windows上,按钮的背景无法更改。
Windows中按钮的背景是从SWT外部设置的
右键单击桌面,单击属性
转到“外观”选项卡
单击“高级”
我相信“3D对象”决定了按钮的背景。这取决于每个用户的主题
SWT的一个优点是它使用了底层的系统小部件和主题。SWT令人沮丧的一点是它使用了底层的系统小部件和主题。在windows操作系统上的
按钮。setBackGround
不能直接工作。一小段代码可能会有所帮助。覆盖按钮的绘制事件,如下所示:-
-----obj是下面代码段中的按钮名称------------
可以使用CLabel模拟按钮。添加鼠标侦听器以更改鼠标下移和鼠标上移时的背景,并在“鼠标上移”事件中分派一个选择侦听器事件,使其行为与按钮相同。例如:
Color bg = ...
Color shadow = ...
CLabel simulatedButton = new CLabel(parent, SWT.PUSH);
simulatedButton.setBackground(bg);
simulatedButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
simulatedButton.setBackground(bg);
notifyListeners(SWT.Selection, new Event());
}
@Override
public void mouseDown(MouseEvent e) {
simulatedButton.setBackground(shadow);
}
});
当您按下鼠标以获得单击按钮的效果时,这会短暂更改按钮的背景。与其他SWT小部件不同,CLabel也可以进行扩展,因此如果需要经常这样做,可以创建一个子类 否您不能更改SWT按钮的背景。您可以在EclipseSWT文档中找到此信息 将接收器的背景色设置为参数指定的颜色,如果参数为null,则设置为控件的默认系统颜色
注意:此操作是一个提示,可能会被平台覆盖。例如,在Windows上,按钮的背景无法更改。可能是Windows SWT中的最后一次更改改变了这一点吗?我在代码中留下了红色背景,我将SWT库更改为最新版本,现在背景颜色正在更改
btnNewButton.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
您可以使用上述代码在SWT for windows中更改按钮的背景色。
应满足以下几个先决条件:
- 使用这两个SWT jar:org.eclipse.SWT.win32.win32.x86_64_3.109.0.v20181204-1801.jar和org.eclipse.SWT_3.109.0.v20181204-1801.jar。(109版)
- 导入org.eclipse.wb.swt.SWTResourceManager 您也可以尝试最新版本的JAR,但它对我很有用。 通常,您可以转到windows builder中的“高级属性”面板来设置背景,但它在运行时不反映颜色。这样,问题就可以解决了
public void setBackground(Color color)
btnNewButton.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE));