显示/隐藏系统托盘中的应用程序

时间:2016-10-17 16:08:42

标签: java swt

我需要一些指导,以便在我点击它时如何让应用程序显示在系统托盘中。

我已设法尽量减少关闭时的应用,但我无法让它显示出来。 如果我建立一个具有相同内容的新shell会有帮助吗?(我正在构建一个SWT应用程序)

这就是我初始化我的Shell的方式:(我修改了它,所以我不会在SWT中使用AWT)

protected Shell shlSmartHouseSystem;

public void open() {
    Display display = Display.getDefault();
    createContents();
    shlSmartHouseSystem.open();
    shlSmartHouseSystem.layout();
    while (!shlSmartHouseSystem.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

这是我在托盘中最小化的功能:

public void minimizeToTrayOnClose() {

        final Display display = shlSmartHouseSystem.getDisplay();
        Image image = new Image(display,"D:\\VIA_University_(Embedded_Systems)\\AJP_Workspace\\HouseSystem_Server\\icon-smart-house.png");
        Tray tray = display.getSystemTray();

    if (tray != null) {
        TrayItem trayItm = new TrayItem(tray,SWT.NONE);
        trayItm.setImage(image);

        final Menu menu = new Menu(shlSmartHouseSystem, SWT.POP_UP);

        MenuItem menuItem = new MenuItem(menu, SWT.PUSH);
        menuItem.setText("Show");   
        menuItem.addListener (SWT.Selection, new Listener () {          
            public void handleEvent (Event e) {
                System.out.println("Opened");
            }
        });

        menuItem = new MenuItem(menu, SWT.PUSH);        
        menuItem.setText("Exit");
        menuItem.addListener (SWT.Selection, new Listener () {          
            public void handleEvent (Event e) {
                System.exit(0);
            }
        });

        trayItm.addListener (SWT.MenuDetect, new Listener () {
            public void handleEvent (Event event) {
                menu.setVisible (true);
            }
        });
    }
}

0 个答案:

没有答案