Sunteya
发贴: 22
积分: 0
|
于 2005-04-03 15:52
楼上的大哥不明白我的意思啊,那我就在说一下吧。 这个问题是我在Windows XP下用SWT做Tab时遇到的。
做Tab的时候,如果需要在选项卡(TabItem)上添加多个控件的话,是应该需要先把 这些控件添加到一个Composite中,然后在用TabItem的setControl(Control control) 才 行吧,因为setControl(Control control) 之支持一个控件而且也不支持Layout。
而我们知道在Windows下Composite默认的应该是灰色的背景,而把带有灰色背景的Composite添加到TabItem的中的话,当程序运行的时候由于Windows的经典式样, 出现的Tab本身就是灰色的背景,所以界面看上去很好。
但Windows XP有提供了一个XP 风格的式样,在这个式样下TAB的背景变成了白色的渐变。而原来Composite由于是使用灰色的背景的所以这就和TAB显的格格不入。 同样的问题如果用swing的话只需要对JPanel使用setOpaque(false)就可以使TAB显示 出他原来的白色渐变背景,而这在SWT下我却怎么也做不到。(也就是3楼的那个图)
同样的问题也存在在比如,对于一个想用图案做背景的控件上,放上一个Composite, 想在上面放写控件,想让这些控件显示出来。但实际上的效果却是在图案的背景上 有一个灰色的矩形区域,在这个矩形的区域上才有控件,但原本的意图是要看不到这些 灰色的Composite背景而直接看到 原本的图案背景。
原本我以为蛮简单的只要用SWT.NO_BACKGROUND就可以了,但实际上NO_BACKGROUND把 所有的背景都去掉了。或者说直接就可以看到其他程序了(就像是镂空的效果)。
我本人也是这几天刚刚开始用SWT 做东西,所以还是希望各位有经验的大哥帮忙解决下这个问题,谢谢了
|