2016-08-17 41 views
4

我已经看过关于此的其他一些帖子,但并没有真正理解它。制作一个java程序在电脑的后台运行

我制作了一个程序,它像一台服务器一样捕获屏幕的不同图片。现在,我希望程序能够在后台处于活动状态 - 就像出现在隐藏图标下的程序一样。不直接显示在底部任务栏的程序。 当我将它执行到jar文件时,是否需要在我的java程序中添加一些特定的代码?或者我需要以其他方式创建项目?

enter image description here

enter image description here

我希望这是足以解释 - 在此先感谢

+0

你不需要特别的东西吧。创建一个可执行的jar就够了。 – davidxxx

+0

“就像出现在隐藏图标下的程序一样。”它是什么 ??? – davidxxx

+0

如果你想从控制台启动它,但不把它与一个关联,你可以简单地使用'javaw'而不是'java'。 –

回答

1

东西超级简单,我从Here了。我所做的只是点击添加一个退出。

代码

public static void main (String [] args) { 
    if (!SystemTray.isSupported()) { 
     System.out.println("SystemTray is not supported"); 
     return; 
    } 
    Image image = Toolkit.getDefaultToolkit().getImage("MY/PATH/TO_IMAGE"); 

    final PopupMenu popup = new PopupMenu(); 
    final TrayIcon trayIcon = new TrayIcon(image, "MY PROGRAM NAME", popup); 
    final SystemTray tray = SystemTray.getSystemTray(); 

    MenuItem exitItem = new MenuItem("Exit"); 
    exitItem.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      System.exit(1); 
     } 
    }); 
    popup.add(exitItem); 

    trayIcon.setPopupMenu(popup); 

    try { 
     tray.add(trayIcon); 
    } catch (AWTException e) { 
     System.out.println("TrayIcon could not be added."); 
    } 
} 

刚刚得到任何图像,并把它添加到您的资源或你保持你的图片,并作出路径。

0

SystemTray.getSystemTray().add(trayIcon)完成这项工作。

这里我的应用程序的一个示例:

Image imageTrayIcon = Toolkit.getDefaultToolkit().createImage(YourClass.class.getResource("trayicon.png")); 
    final TrayIcon trayIcon = new TrayIcon(imageTrayIcon, "title"); 

    // optional : a listener 
    trayIcon.addMouseListener(new MouseAdapter() { 

     @Override 
     public void mouseClicked(MouseEvent e) { 

     if (e.getClickCount() == 2 && !e.isConsumed()) { 
      e.consume(); 
      // process double click 
      } 
     } 
    }); 
    // optional : adding a popup menu for the icon 
    trayIcon.setPopupMenu(popup); 

    // mandatory 
    try { 
     SystemTray.getSystemTray().add(trayIcon); 
    } 
    catch (AWTException e1) { 
     // process the exception 
    } 
相关问题