在我的零件类中,我删除了实现@Focus注释方法
@Focus
public void setFocus() {
viewer.getControl().setFocus();
}
之后,选项卡文本下划线不可见。但是当打开的带有单部分选项卡文本下划线的窗口可见时,如果我单击窗口下划线的任何地方就消失了。 如何删除制表符文本下划线?
如果用于零件的CTabFolder
具有焦点,则绘制下划线。因此,应始终为部件定义@Focus
方法,并将焦点设置为部件中的某个其他控件。
选项卡的实际绘制由选项卡渲染器完成,您可以使用swt-tab-renderer
在 CSS 中设置该渲染器:
CTabFolder
{
swt-tab-renderer: url('bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering');
}
但是,选项卡呈现器相当复杂且难以编写。
下划线的标准呈现器中的实际代码为:
if (parent.isFocusControl()) {
Display display = parent.getDisplay();
if (parent.simple || parent.single) {
gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
gc.drawFocus(xDraw-1, textY-1, extent.x+2, extent.y+2);
} else {
gc.setForeground(display.getSystemColor(BUTTON_BORDER));
gc.drawLine(xDraw, textY+extent.y+1, xDraw+extent.x+1, textY+extent.y+1);
}
}
此代码中的parent
是CTabFolder
(来自org.eclipse.swt.custom.CTabFolderRenderer
(