我想从"关闭"更改关闭按钮的工具提示去"删除"并取代" x"与另一个图像。我找到了SWT代码中的相应位置。
班级CTabFolder:
String _getToolTip(int x, int y) {
// ...
if ((showClose || item.getShowClose()) && item.closeRect.contains(x, y)) {
return SWT.getMessage("SWT_Close"); //$NON-NLS-1$
}
void drawClose(GC gc, Rectangle closeRect, int closeImageState) {
// ...
}
令我悲伤的是,我注意到这两种方法都不能被覆盖。那么真的没有机会满足我的要求吗?虽然CTabFolderRenderer甚至打算被子类化。用户Niranjan问similar question,他显然设法解决了我的一个问题。但是如何?
答案 0 :(得分:0)
您可以通过调用CTabFolderRenderer
来设置要使用的新渲染器,而不是CTabFolder.setRenderer
。
您的新渲染器可以展开CTabFolderRenderer
,但是如果您无法覆盖drawClose
,则必须覆盖draw
并复制大量代码。
Eclipse本身使用制表符渲染器org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering
来更改某些绘图(但不是关闭按钮)。
所以这可能是一个更好的基础渲染类的工作。