最小化后调整 JFace 应用程序 window

Resize JFace application window after minimizing

我有一个 JFace 应用程序,我正在使用一个托盘 class 和一个弹出菜单:

public class MyApp extends ApplicationWindow {
  private TrayItem trayItem;
  private Menu trayMenu;
  private MenuItem trayOpenMenu;

  @Override
  protected Control createContents(Composite parent) {
    Tray tray = Display.getCurrent().getSystemTray();
    trayItem = new TrayItem(tray, SWT.NONE);
    trayItem.setToolTipText(Constants.APP_NAME);
    trayItem.setVisible(false);
    trayItem.addMenuDetectListener(new MenuDetectListener() {
      @Override
      public void menuDetected(MenuDetectEvent e) {
        trayMenu.setVisible(true);
      }
    });

    trayMenu = new Menu(getShell(), SWT.POP_UP);

    trayOpenMenu = new MenuItem(trayMenu, SWT.PUSH);
    trayOpenMenu.setText("&Open");
  }
}

每次 window 最小化时,我都会显示托盘项目:

@Override
protected void configureShell(Shell newShell) {
  super.configureShell(newShell);
  newShell.addListener(SWT.Iconify, new Listener() {
    @Override
    public void handleEvent(Event e) {
      trayItem.setVisible(true);
    }
  });
  newShell.addListener(SWT.Deiconify, new Listener() {
    @Override
    public void handleEvent(Event e) {
      trayItem.setVisible(false);
    }
  });
}

但我不知道如何通过单击打开的菜单将 window 调回前面(调整大小)?

使用 false 参数调用 Shell setMinimized 方法:

shell.setMinimized(false);

您可能还想使用

shell.setActive();
shell.moveAbove(null);

使 shell 处于活动状态并高于其他 windows。