- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
关闭应用程序后如何显示我创建的java应用程序?我的意思是我想关闭我制作的应用程序,之后它仍然在后台进程(托盘)上运行,我做到了,但是在我双击托盘图标后如何使应用程序再次显示(弹出)?有人可以帮助我吗?
public MainMenu(String access) {
this.access = access;
initComponents();
customInit();
this.setLocationRelativeTo(null);
this.setExtendedState(this.MAXIMIZED_BOTH);
requestJobList("ALL");
setDefaultCloseOperation(HIDE_ON_CLOSE);
createReminder();
}
private void customInit(){
joblistTable.setCellSelectionEnabled(rootPaneCheckingEnabled);
}
private void createReminder(){
String icoPath = "C:/Users/user/Documents/NetBeansProjects/MOADesktopBaru/src/com/mayora/image/MOA.PNG";
if(!SystemTray.isSupported()){
System.out.println("System tray is not supported !!! ");
return ;
}
//get the systemTray of the system
SystemTray systemTray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(icoPath);
//popupmenu
PopupMenu trayPopupMenu = new PopupMenu();
//1t menuitem for popupmenu
MenuItem setting = new MenuItem("Setting");
setting.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SettingFrame SF = new SettingFrame ();
jDesktopPane.add(SF);
SF.show();
}
});
trayPopupMenu.add(setting);
//2nd menuitem of popupmenu
MenuItem close = new MenuItem("Close");
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
trayPopupMenu.add(close);
//setting tray icon
TrayIcon trayIcon = new TrayIcon(image, "MOA Desktop", trayPopupMenu);
//adjust to default size as per system recommendation
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2)
{
initComponents();
customInit();
setExtendedState(MAXIMIZED_BOTH);
requestJobList("ALL");
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
});
try{
systemTray.add(trayIcon);
}catch(AWTException awtException){
awtException.printStackTrace();
}
}
最佳答案
我认为 setDefaultCloseOperation(EXIT_ON_CLOSE);
不应放置在托盘图标监听器内。
为了能够通过双击托盘图标再次显示您的应用,只需将以下行添加到 mouseClicked()
方法:
setVisible(true);
请注意,您再次可见的是 JFrame,因此如果您需要指定它,只需将其添加到 setVisible(true)
方法之前即可。顺便说一句,由于应用程序已经执行(在后台),因此您不需要再次调用 initComponents()
方法。
另一个建议,不要使用mouseClicked()
方法。使用 MouseListener Interface 中的 mousePressed()
反而。为什么?有时,您单击的速度太快,以至于应用程序检测到 mouseDragged
事件,因此单击不算数。如果您使用mousePressed()
,则可以保证它检测到两次点击。
关于java - setDefaultCloseOperation(HIDE_ON_CLOSE) 和系统托盘图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30254896/
关闭应用程序后如何显示我创建的java应用程序?我的意思是我想关闭我制作的应用程序,之后它仍然在后台进程(托盘)上运行,我做到了,但是在我双击托盘图标后如何使应用程序再次显示(弹出)?有人可以帮助我吗
我有一个 WorldEditor JFrame,它启动 Game JFrame。但是,当Game关闭时,我不希望它结束整个程序,因此我将默认关闭操作设置为HIDE_ON_CLOSE。但是,为了节省
我的 Java 应用程序有问题,我在托盘栏中设置了减少图标的必要条件并设置: app.getMainFrame().setDefaultCloseOperation(HIDE_ON_CLOSE); 因
我知道文档中说JFrame.setDefaultCloseOperation(int)是HIDE_ON_CLOSE。但是,当我在当前帧窗口上按 X 时,它不仅会隐藏当前帧,还会终止正在运行的程序。谁能
在 javadoc 上,HIDE_ON_CLOSE 默认选项说明了这一点 Automatically hide the frame after invoking any registered Wind
我是一名优秀的程序员,十分优秀!