swt color资源的问题 求懂的解答下

疯狂椰子 2013-04-09 10:59:49
这个是我的程序效果图

当有其他程序挡住swt的界面 如图


当然其他程序挪开后,swt界面里原来的颜色有部分消失了 如图
哪位大侠知道是怎么回事,求解释啊????


程序部分源码

@Override
public void paintControl(PaintEvent event) {
GC gc = event.gc;

gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_RED));
if (hover)
gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_YELLOW));
gc.fillRectangle(0, 0, event.width, event.height);

//
gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WHITE));
gc.drawLine(0, event.height - 1, event.width, event.height - 1);
//

gc.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
gc.drawString("aaa", 5, 5, true);

gc.dispose();

}
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂椰子 2013-04-12
  • 打赏
  • 举报
回复
问题我找到了,代码改成如下这样就可以了,有懂的帮忙解释下呗
@Override
	public void paintControl(PaintEvent event) {
		Rectangle rec=getBounds();
		GC gc = event.gc;

		gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_RED)); 
		if (hover)
			gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_YELLOW));
		gc.fillRectangle(0, 0, rec.width, rec.height);

		//
		gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WHITE));
		gc.drawLine(0, rec.height - 1, rec.width, rec.height - 1);
		//

		gc.setForeground(SWTResourceManager.getColor(SWT.COLOR_BLACK));
		gc.drawString("aaa", 5, 5, true);

		gc.dispose();

	}
STEEL-CHINA 2013-04-10
  • 打赏
  • 举报
回复
呵呵,好久没有弄SWT了,刷新问题。 试试获取焦点的时候再刷新一下。
STEEL-CHINA 2013-04-10
  • 打赏
  • 举报
回复
举一反三,多想想,我以前做项目的时候也遇到过,我还要做画线连接,拖动等等,所以向你说的问题出现很多,并且很奇怪的。问题不是很难。 因为SWT项目少,所以忘记很多了。
疯狂椰子 2013-04-10
  • 打赏
  • 举报
回复
谢楼上的回复 这样是可以重新恢复界面的颜色,但是有没有办法避免界面上不会以上方式失去颜色。

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧