【问题标题】:Resize JFace application window after minimizing最小化后调整 JFace 应用程序窗口的大小
【发布时间】:2016-02-20 16:21:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java swt jface tray


    【解决方案1】:

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

    shell.setMinimized(false);
    

    您可能还想使用

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

    使外壳处于活动状态并位于其他窗口之上。

    【讨论】:

    • 嗯,好的。不幸的是,有时知道在哪里搜索有点令人困惑:在 JFace 类中或在包装的 SWT 类中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多