当前位置:编程学习 > JAVA >>

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

这个是我的程序效果图

当有其他程序挡住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();

}
swt color 资源释放 --------------------编程问答-------------------- 呵呵,好久没有弄SWT了,刷新问题。
试试获取焦点的时候再刷新一下。 --------------------编程问答-------------------- 谢楼上的回复 这样是可以重新恢复界面的颜色,但是有没有办法避免界面上不会以上方式失去颜色。 --------------------编程问答-------------------- 举一反三,多想想,我以前做项目的时候也遇到过,我还要做画线连接,拖动等等,所以向你说的问题出现很多,并且很奇怪的。问题不是很难。
因为SWT项目少,所以忘记很多了。 --------------------编程问答-------------------- 问题我找到了,代码改成如下这样就可以了,有懂的帮忙解释下呗
@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();

}
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,