swt color资源的问题 求懂的解答下
这个是我的程序效果图当有其他程序挡住swt的界面 如图
当然其他程序挪开后,swt界面里原来的颜色有部分消失了 如图
哪位大侠知道是怎么回事,求解释啊????
程序部分源码
swt color 资源释放 --------------------编程问答-------------------- 呵呵,好久没有弄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项目少,所以忘记很多了。 --------------------编程问答-------------------- 问题我找到了,代码改成如下这样就可以了,有懂的帮忙解释下呗
@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相关