所以我偷了这个很酷PopupComposite
的,我真的很满意。
只有一个问题。如果它把 a 放进org.eclipse.swt.widgets.Text
去,我打开弹出窗口,聚焦Text
,然后按ESC,然后两者都Text
自行PopupComposite
处理。
我真的无法弄清楚 dispose 调用来自哪里。这是一个Shell
问题吗?我Shell
应该在弹出窗口中使用什么?
SSCCE:
/**
*
* @author ggrec
*
*/
public class PopupCompositeTester
{
public static void main(final String[] args)
{
new PopupCompositeTester();
}
private PopupCompositeTester()
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
createContents(shell);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if ( !display.readAndDispatch() )
display.sleep();
}
display.dispose();
}
private static void createContents(final Composite parent)
{
final Button button = new Button(parent, SWT.PUSH);
button.setText("Poke Me");
final PopupComposite popup = new PopupComposite(parent.getShell());
new Text(popup, SWT.NONE);
popup.pack();
button.addSelectionListener(new SelectionAdapter()
{
@Override public void widgetSelected(final SelectionEvent e)
{
popup.show( Display.getDefault().map(parent, null, button.getLocation()) );
}
});
}
}