在我的零件类中,我删除了实现了
的@Focus批注方法@Focus
public void setFocus() {
viewer.getControl().setFocus();
}
该标签文本下划线后不可见。但是,当打开带有单部分选项卡的文本下划线的窗口可见时,如果我在窗口下划线的任何位置单击,就消失了。 如何删除标签文字下划线?
答案 0 :(得分:0)
如果用于零件的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
)