如何正确设置CTabItem的边框样式

时间:2011-07-11 11:59:05

标签: java eclipse swt

我编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI。

App screenshot

Eclipse提供的CTabItems在激活时具有蓝色边框,在非活动时具有白色边框(如果CTabItem是Eclipse视图,则为灰色)。

我创建的CTabItems总是以白色为边框,活动标签上的文字加下划线。

如何控制CTabItems的样式以更贴近Eclipse标签?

编辑:

我提出了以下代码,它从活动的Eclipse主题中提取正确的颜色。

IWorkbench workBench = PlatformUI.getWorkbench();
ITheme theme = workBench.getThemeManager().getCurrentTheme();
ColorRegistry colreg = theme.getColorRegistry();

Color c1 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START);
Color c2 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END);

但是,这并不理想,因为IWorkbenchThemeConstants位于eclipse ui内部包中。

是否有另一种公共方式来引用这些内部IWorkbenchThemeConstants引用的相同颜色?

1 个答案:

答案 0 :(得分:11)

您可以使用方法在选定和未选择的CTabFolder项目上定义渐变。例如

CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
folder.setBackground(new Color[]{display.getSystemColor(SWT.COLOR_YELLOW), display.getSystemColor(SWT.COLOR_RED)}, new int[]{100}, true);
folder.setSelectionBackground(new Color[]{display.getSystemColor(SWT.COLOR_WHITE), display.getSystemColor(SWT.COLOR_BLUE)}, new int[]{100}, true);

会产生这个(丑陋的)标签

colored SWT CTabFolder

所以你必须选择日食所具有的正确颜色..

或者您可以编写自己的CTabFolderRenderer并将其设置为CTabFolder实例。

修改

对于Eclipse颜色,请尝试

folder.setSelectionBackground(new Color[]{new Color(display, new RGB(242, 244, 247)), new Color(display, new RGB(157, 167, 195))}, new int[]{100}, true);

enter image description here

修改

找到正确的方法

folder.setSelectionBackground(new Color[]{display.getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT), display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND)}, new int[]{100}, true);