import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
public class HideToSystemTray extends JFrame {
TrayIcon trayIcon;
SystemTray tray;
JButton button;
HideToSystemTray() {
super("SystemTray test");
button = new JButton("Press");
button.setBounds(10, 10, 40, 40);
setUndecorated(true);
getContentPane().add(button);
System.out.println("creating instance");
try {
System.out.println("setting look and feel");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.out.println("Unable to set LookAndFeel");
}
if (SystemTray.isSupported()) {
System.out.println("system tray supported");
tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png");
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exiting....");
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
defaultItem = new MenuItem("Open");
defaultItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
});
popup.add(defaultItem);
trayIcon = new TrayIcon(image, "SystemTray Demo", popup);
trayIcon.setImageAutoSize(true);
} else {
System.out.println("system tray not supported");
}
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Execute when button is pressed
System.out.println("You clicked the button");
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
}
});
/* addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if(e.getNewState()==ICONIFIED){
try {
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
} catch (AWTException ex) {
System.out.println("unable to add to tray");
}
}
if(e.getNewState()==7){
try{
tray.add(trayIcon);
setVisible(false);
System.out.println("added to SystemTray");
}catch(AWTException ex){
System.out.println("unable to add to system tray");
}
}
if(e.getNewState()==MAXIMIZED_BOTH){
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
if(e.getNewState()==NORMAL){
tray.remove(trayIcon);
setVisible(true);
System.out.println("Tray icon removed");
}
}
}); */
setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png"));
setVisible(true);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new HideToSystemTray();
}
}
의 공식 이름, 나는 "X"가 창을 누르면 내 프로그램이 상태 영역에서 영업을하고 싶습니다이다 _system tray_는 _notification area_입니다 ([여기] (http://blogs.msdn.com/b/oldnewthing/archive/2003/09/10/54831.aspx) 참조). 그것은 당신의 수색을 도울 것입니다. – user786653
@ user786653 Java 구현이 시스템 트레이 아래에있는 경우에도 재미가 있습니다. 그것은 단지 하나의 싸움 raymond와 공동 방금 잃어버린 - 그들의 공식 가이드와 함께 그것을 사용하는 방법 (좋은 일 이니 ~) – Voo
Voo : 자바 구현은 Windows보다 많은 시스템에서 작동하며 다른 창 관리자는»시스템이라는 용어를 채택했습니다 트레이«... – Joey