我在我的java应用程序中使用了一个系统托盘。我想消失GUI并运行应用程序在背景,但系统托盘必须保持可用当用户点击关闭关闭JFrame的按钮。如何在关闭JFrame时在后台运行应用程序?
回答
我想消失GUI和在后台运行的应用程序,但 系统托盘必须保持可当 JFrame的关闭按钮,用户点击。
- 设定适当的JFrames method for
DefaultCloseOperation
,JFrame.setDefaultCloseOperation(HIDE_ON_CLOSE)
,默认情况下,API
实施设置当用户在此窗体上发起“close”时默认执行的操作。您必须指定以下选项之一:
DO_NOTHING_ON_CLOSE(在WindowConstants中定义):不做任何事情;要求程序处理注册WindowListener对象的 windowClosing方法中的操作。
HIDE_ON_CLOSE(在WindowConstants中定义):在调用任何注册的WindowListener对象后自动隐藏框架。
DISPOSE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏和配置框架。
EXIT_ON_CLOSE(在JFrame中定义):使用系统退出方法退出应用程序。仅在应用程序中使用它。
默认情况下,该值设置为HIDE_ON_CLOSE。 此属性值的更改导致属性更改事件的触发,其中 属性名称为“defaultCloseOperation”。
然后从
SystemTray
调用JFrame.setVisible(true)
,本次活动是由入店
您可以在单独的线程中使用系统托盘。
这是一个非常危险的建议 – MadProgrammer 2013-03-15 21:14:48
好的,为什么? – CodeBlue 2013-03-15 21:16:39
即使TrayIcon是AWT组件,它仍然依赖并使用事件派发线程。这可能会导致更新UI以在EDT的上下文中执行。更好地把没有UI处理放在一个单独的线程 – MadProgrammer 2013-03-15 21:36:42
张贴这作为一个答案
就像MadProgrammer说:
不要设置帧EXIT_ON_CLOSE或调用System.exit框架时关闭。事件分派线程将继续运行,直到JVM终止为止
- 1. 如何关闭/停止在后台运行应用程序android
- 2. 如何在应用程序关闭时使服务在后台运行?
- 3. 应用程序在关闭后运行
- 4. 如何在我启动应用程序时关闭(或在后台)其他正在运行的应用程序?
- 5. WPF应用程序仍然在后台运行关闭
- 6. 强制关闭应用程序并在后台运行
- 7. 如何在关闭wpf应用程序时关闭所有后台进程
- 8. 如何在关闭应用程序时在后台运行快速应用程序?
- 9. 应用程序在后台被关闭
- 10. 如何在进入后台时关闭iPhone应用程序?
- 11. pyinstaller程序在关闭后继续在后台运行
- 12. 即使在关闭应用程序时也运行后台任务
- 13. 关闭View后如何在后台运行网络进程?
- 14. 如何在Windows关机时关闭控制台应用程序
- 15. 在特定时间在后台关闭应用程序
- 16. 如何在关闭应用程序时保持服务运行?
- 17. 如何在应用程序关闭时运行方法完成?
- 18. 如何在关闭JasperViewer时关闭JFrame
- 19. 如何在程序中间关闭JFrame
- 20. 如何长时间在后台运行iphone应用程序?
- 21. 如何在应用程序的后台运行计时器?
- 22. Android在后台关闭应用程序,如何停止?
- 23. 在应用程序关闭的情况下在后台运行任务
- 24. 在后台运行应用程序IntentService
- 25. Android应用程序在后台运行
- 26. Android,在后台运行应用程序
- 27. 在后台运行应用程序
- 28. 在后台运行应用程序
- 29. 在后台运行iOS应用程序
- 30. 在后台运行的应用程序
当框架关闭时,不要将框架设置为EXIT_ON_CLOSE或调用System.exit。事件分派线程将继续运行,直到JVM终止为止 – MadProgrammer 2013-03-15 21:14:18
@MadProgrammer这是正确的答案 - 事实上,为什么不把它作为答案? – Adrian 2013-03-15 21:26:14
@adrian导致它在凌晨,我需要另一个杯子,如果茶:P – MadProgrammer 2013-03-15 21:40:19