Java 如何正确设置CTabItem的边框样式
我已经编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI Eclipse提供的CTabItem在活动时有蓝色边框,在不活动时有白色边框(如果CTabItem是Eclipse视图,则为灰色) 我创建的CTabItems总是用白色边框,活动选项卡上的文本带有下划线 我如何控制我的CTabItems的样式以更紧密地匹配Eclipse选项卡 编辑: 我提出了以下代码,从活动Eclipse主题中提取正确的颜色Java 如何正确设置CTabItem的边框样式,java,eclipse,swt,Java,Eclipse,Swt,我已经编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI Eclipse提供的CTabItem在活动时有蓝色边框,在不活动时有白色边框(如果CTabItem是Eclipse视图,则为灰色) 我创建的CTabItems总是用白色边框,活动选项卡上的文本带有下划线 我如何控制我的CTabItems的样式以更紧密地匹配Eclipse选项卡 编辑: 我提出了以下代码,从活动Eclipse主题中提取正确的颜色 IWorkbench workBench = PlatformUI.
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引用的相同颜色?您可以使用方法定义选定和未选定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);
将生成此(丑陋)选项卡
所以你只需要找到eclipse所拥有的正确颜色
或者您可以编写自己的,并将其设置为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);
写一个新的>确实是一个很重要的选择;-)这有点像编写一个演示工厂——这是你最后一次做的事情,但这是一种选择。它的存在只是为了完整;]。有没有关于如何找到Eclipse使用的正确颜色的建议?谢谢您提供的额外信息,但是您提供的常量不会产生与您手动选择颜色的示例相同的颜色。我已经编辑了我的原始问题,以显示一些代码,这些代码将查找正确的颜色,但依赖于内部Eclipse包中的类。