2016-08-17 1 views
4

나는 이것에 관한 다른 게시물을 살펴 보았지만 그다지 이해하지는 못했다.컴퓨터의 백그라운드에서 자바 프로그램 실행

저는 스크린과 다른 그림을 캡처하는 동안 서버처럼 작동하는 프로그램을 만들었습니다. 자, 프로그램을 백그라운드에서 활성화하고 싶습니다. 숨겨진 아이콘 아래에 나타나는 프로그램과 같습니다. 하단 작업 표시 줄에 직접 표시되지 않는 프로그램. jar 파일로 실행할 때 Java 프로그램 내에서 특정 코드를 추가해야합니까? 아니면 다른 방법으로 프로젝트를 생성해야합니까?

enter image description here

enter image description here

나는이 충분히 설명 했다 희망 - 미리 감사드립니다

+0

당신은 그것을 위해 특별한 일을하지 않아도됩니다. 실행 가능한 jar를 만드는 것으로 충분합니다. – davidxxx

+0

"숨겨진 아이콘 아래에 나타나는 프로그램과 같습니다." 그것은 무엇입니까 ??? – davidxxx

+0

콘솔에서 시작하지만 콘솔과 연결하지 않으려면 java 대신'javaw'를 사용하면됩니다. –

답변

1

뭔가. 내가 한 모든 것은 클릭시 이탈을 추가하는 것입니다.

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

에서 당신은 자바 스윙 API와 조합하여 java.awt.SystemTray API를 사용하여이 작업을 수행 할 수 있습니다.

오라클에서이 문서를 참조하십시오 : 나는 Here에서 가져온 것이 슈퍼 간단한

Oracle Java documentation for System Tray API

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 
    } 
관련 문제