如何在我的自定义工具提示中获得气球?

时间:2013-04-19 05:29:04

标签: java swt jface

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

Mytooltip课程:

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);

Balloon image

1 个答案:

答案 0 :(得分:3)

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

SWT工具提示可以通过将SWT.BALLOON作为样式位来显示气球。

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

所以这就是结论:你不能将swt工具提示子类化,使其可编辑。您无法使JFace工具提示看起来像您希望的样子。剩下的唯一解决方案是根据WidgetComposite创建自己的Canvas,以满足您的需求。