我编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI。
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引用的相同颜色?
答案 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);
会产生这个(丑陋的)标签
所以你必须选择日食所具有的正确颜色..
或者您可以编写自己的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);
修改强>
找到正确的方法
folder.setSelectionBackground(new Color[]{display.getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT), display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND)}, new int[]{100}, true);