3

我正在创建一个自定义工具提示,其中有一个文本框。我能够做到这一点,但我无法获得如附图中所示的气球状图标。任何人都可以帮助我解决这个问题。

我的工具提示类:

public class MyToolTip extends ToolTip {
    private Shell parentShell;

    public MyToolTip(Control control) {
        super(control,SWT.BALLOON,false);
        this.parentShell = control.getShell();
    }


    @Override
    protected Composite createToolTipContentArea(Event event, Composite parent) {
        // TODO Auto-generated method stub
        Composite comp = new Composite(parent,SWT.NONE);
        comp.setLayout(new FillLayout());

        Text text = new Text(comp,SWT.BORDER);
        text.setText("");

        return comp;
    }
}

使用工具提示类:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout(SWT.VERTICAL));
    Text text = new Text(shell, SWT.BORDER);
    text.setText("sample text field");

    MyToolTip myTooltipLabel = new MyToolTip(text);
    myTooltipLabel.setShift(new Point(-5, -5));
    myTooltipLabel.setHideOnMouseDown(false);
    myTooltipLabel.activate();

    myTooltipLabel.setRespectDisplayBounds(false);

    myTooltipLabel.setRespectMonitorBounds(false);

气球图像

4

1 回答 1

3

问题是,您正在使用org.eclipse.jface.window.ToolTip,而用于创建该屏幕截图的代码使用org.eclipse.swt.widgets.ToolTip.

SWT 工具提示可以通过SWT.BALLOON作为样式位传递而具有气球外观。

JFace 工具提示不支持SWT.BALLOON,仅支持ToolTip.NO_RECREATEToolTip.RECREATE

所以这是结论:您不能将 swt 工具提示子类化以使其可编辑。您不能使 JFace 工具提示看起来像您想要的那样。Widget剩下的唯一解决方案是根据自己的想法创建自己的解决方案,Composite或者Canvas按照您的要求创建自己的解决方案。

于 2013-04-19T11:16:59.553 回答