如何更改 SWT 进度条的颜色?
Posted
技术标签:
【中文标题】如何更改 SWT 进度条的颜色?【英文标题】:How to change color of SWT progress bar? 【发布时间】:2014-06-12 03:44:18 【问题描述】:是否可以使用绘制侦听器更改进度条颜色?
我不想要一个初始前景色和背景色,而是希望它像正常的绿色进度条在 Windows 上一样工作,但具有我自己的前景和背景。
我尝试了下面的代码,但它不起作用
GC gc = event.gc;
Device device=Display.getDefault();
Color foreground = gc.getForeground();
Color background = gc.getBackground();
gc.setForeground(device.getSystemColor(SWT.COLOR_RED));
gc.setBackground(device.getSystemColor(SWT.COLOR_YELLOW));
我坚持这个要求,并被告知可以使用绘制侦听器,想知道如何!
任何帮助将不胜感激。
【问题讨论】:
SWT- How to change ProgressBar color in Windows?的可能重复 因此,如果您不想完全自己绘制进度条,则无法更改进度条的外观。如果你真的很绝望,你可以通过 SWT/AWT 桥使用JProgressBar
。
如果你只是使用windows(vista或以上),你可以使用ProgressBar
的不同风格(红、绿、黄),可以看到here。
谢谢 Baz。我知道这些基于状态的颜色,我的应用程序旨在跨平台运行,并且需要具有前景色/背景色的白色/灰色组合。为什么我们不能使用相同的代码来根据状态将颜色更改为红色、绿色、黄色,以及我们选择的某种颜色?如果那个黑客是可能的。让我知道你的意见。谢谢
您不能使用该机制,因为这三种颜色是唯一由操作系统定义的颜色。
【参考方案1】:
进度条的颜色由操作系统决定。
在 Windows 环境中的大多数情况下,进度条会显示为绿色。使用setState(int state)
命令会改变进度条的“状态”,在某些系统下也会改变颜色 - 在 Windows 7 中,paused 会导致黄色和错误 结果为红色。然而,这些状态具有其他有意义的含义,如果仅仅将它们用于颜色的风格推理,用户可能会感到困惑。一般来说,你应该认为颜色是不变的。
【讨论】:
以上是关于如何更改 SWT 进度条的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
delphi xe android 更改ProgressBar1进度条颜色