Java에서 시스템 트레이 기능을 구현하는 방법.
예시 다이어그램
프로젝트 패키지 구조 다이어그램
시스템 작동 스크린샷
핵심 논리 설명을 적용하면 트레이에 숨는다는 것은 본질적으로 양식을 숨기는 것을 의미합니다. 즉, setVisible(false)를 의미하고, 양식을 표시한다는 것은 setVisible(true)를 의미합니다.
프로젝트 코드는 다음과 같습니다.
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
java.net.URL 가져오기;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
공용 클래스 MainFrame은 JFrame을 확장하여 ActionListener를 구현합니다.
개인 정적 최종 긴 serialVersionUID = -7078030311369039390L;
개인 JMenu 메뉴;
개인 JMenuBar jmenuBar;
private String [] jmItemName = {"플레이트에 넣기","시스템 종료"};
공개 메인프레임(){
super("전화번호부");
초기화();
this.setSize(500,400);
this.setJMenuBar(jmenuBar);
this.setLocationRelativeTo(null);
systemTray(); //시스템 트레이
}
/**
* 초기화 인터페이스
*/
공개 무효 초기화(){
menu = new JMenu("시스템 양식");
for(int i=0; i<jmItemName.length; i++){
JMenuItem menuItem = new JMenuItem(jmItemName[i]);
menuItem.addActionListener(this);
menu.add(menuItem);
}
this.jmenuBar = new JMenuBar();
this.jmenuBar.add(메뉴);
}
@보수
공공 무효 actionPerformed(ActionEvent e) {
문자열 작업 = e.getActionCommand();
if("트레이에 놓기".equals(actions)){
this.setVisible(false);
}
if("시스템 종료".equals(actions)){
시스템.exit(0);
}
}
/**시스템 트레이 아이콘 처리.*/
개인 무효 systemTray(){
if(SystemTray.isSupported()){ //시스템이 트레이 기능을 지원하는지 확인합니다.
URL 리소스 = this.getClass().getResource("systray.jpg"); //이미지 경로 가져오기
ImageIcon icon = new ImageIcon(resource); //이미지 객체 생성
PopupMenu popupMenu = new PopupMenu(); //팝업 메뉴 객체 생성
MenuItem itemExit = new MenuItem("Exit the system"); //팝업 메뉴에 종료 항목을 생성합니다.
MenuItem itemShow = new MenuItem("Display form"); //팝업 메뉴에 표시 기본 양식 항목을 만듭니다.
itemExit.addActionListener(new ActionListener() { //exit 이미지에 이벤트 리스너 추가
@보수
공공 무효 actionPerformed(ActionEvent e) {
시스템.exit(0);
}
});
itemShow.addActionListener(new ActionListener() { //이벤트 리스너를 추가하여 양식을 최소화합니다.
@보수
공공 무효 actionPerformed(ActionEvent e) {
setVisible(참);
}
});
popupMenu.add(itemExit);
popupMenu.add(itemShow);
TrayIcon 트레이 아이콘 = new TrayIcon(icon.getImage(),"전화번호부 시스템",popupMenu);
SystemTray sysTray = SystemTray.getSystemTray();
노력하다 {
sysTray.add(trayIcon);
} 잡기(AWTException e1) { }
}
}
/**
* 주요 방법
* @param 인수
*/
공개 정적 무효 메인(String[] args) {
새로운 메인프레임().setVisible(true);
}
}