使java程序在计算机的后台运行

时间:2016-08-17 16:43:06

标签: java background

我看过其他一些关于此事的帖子,但对此并不是很了解。

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

enter image description here

enter image description here

我希望这是足够的解释 - 提前致谢

3 个答案:

答案 0 :(得分: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.");
    }
}

只需获取任何图片并将其添加到您的资源或您保存图片的任何位置,然后找到它。

答案 1 :(得分:0)

您可以通过将java.awt.SystemTray API与Jav​​a Swing API结合使用来实现此目的。

请参阅Oracle的此文档:

Oracle Java documentation for System Tray API

答案 2 :(得分: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
    }