Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确设置CTabItem的边框样式_Java_Eclipse_Swt - Fatal编程技术网

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

Java 如何正确设置CTabItem的边框样式,java,eclipse,swt,Java,Eclipse,Swt,我已经编写了一个Eclipse插件,它提供了一些使用CTabFolder组件的UI Eclipse提供的CTabItem在活动时有蓝色边框,在不活动时有白色边框(如果CTabItem是Eclipse视图,则为灰色) 我创建的CTabItems总是用白色边框,活动选项卡上的文本带有下划线 我如何控制我的CTabItems的样式以更紧密地匹配Eclipse选项卡 编辑: 我提出了以下代码,从活动Eclipse主题中提取正确的颜色 IWorkbench workBench = PlatformUI.

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

Eclipse提供的CTabItem在活动时有蓝色边框,在不活动时有白色边框(如果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引用的相同颜色?

您可以使用方法定义选定和未选定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包中的类。