按钮点击后显示小窗口

时间:2014-11-12 09:41:45

标签: java dialog swt

我正在寻找一种在Button点击时显示小窗口的方法。 使用Jface Dialog并不是我想要的,而是一种可以像工具提示一样准确定位在Button旁边的窗口。

1 个答案:

答案 0 :(得分:3)

您可以使用第二个Shell并将其放在Button旁边:

public static void main(String[] args)
{
    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, false));

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Button");

    final Shell popup = new Shell(shell, SWT.NONE);
    popup.setLayout(new FillLayout());

    Text input = new Text(popup, SWT.BORDER);

    button.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event event)
        {
            if(popup != null && !popup.isDisposed())
                popup.close();
        }
    });

    shell.pack();
    shell.open();

    popup.pack();
    popup.open();

    popup.setLocation(button.toDisplay(button.getBounds().width, 1));

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

看起来像这样:

enter image description here


当然,您需要处理调整大小并移动原始shell的事件以使其保持原位。