改变CTabFolder关闭按钮的外观

时间:2014-09-25 14:47:13

标签: java swt

我想从"关闭"更改关闭按钮的工具提示去"删除"并取代" 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$
}

班级CTabFolderRenderer

void drawClose(GC gc, Rectangle closeRect, int closeImageState) {
    // ...
}

令我悲伤的是,我注意到这两种方法都不能被覆盖。那么真的没有机会满足我的要求吗?虽然CTabFolderRenderer甚至打算被子类化。用户Niranjansimilar question,他显然设法解决了我的一个问题。但是如何?

1 个答案:

答案 0 :(得分:0)

您可以通过调用CTabFolderRenderer来设置要使用的新渲染器,而不是CTabFolder.setRenderer

您的新渲染器可以展开CTabFolderRenderer,但是如果您无法覆盖drawClose,则必须覆盖draw并复制大量代码。

Eclipse本身使用制表符渲染器org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering来更改某些绘图(但不是关闭按钮)。

所以这可能是一个更好的基础渲染类的工作。