JavaFX+Jfoenix 学习笔记(十)--系统托盘及解决中文乱码问题

本文介绍了如何在JavaFX应用中使用java.awt.SystemTray创建系统托盘,并详细讲解了解决中文乱码问题的方法,包括设置适当的JVM参数和在不同环境下配置编码格式。同时提供了实现示例和源代码,帮助开发者更好地理解和应用。
摘要由CSDN通过智能技术生成

前言

桌面应用少不了要用到系统托盘,但是JavaFX并没有给我们提供系统托盘(至少我没找见),不过也不要紧,我们可以用java.awt.SystemTray。

1、创建系统托盘,并添加显示、隐藏、退出按钮

// 我们的自定义系统托盘
	class MySysTray {
		private TrayIcon trayIcon = null;
		private Timeline timeline = new Timeline();
	 
		public void initSystemTray() {
			// 1、创建托盘按钮
			PopupMenu popupMenu = new PopupMenu();		
			MenuItem showItem = new MenuItem("显示"); popupMenu.add(showItem);
			MenuItem hideItem = new MenuItem("隐藏"); popupMenu.add(hideItem);
			MenuItem quitItem = new MenuItem("退出"); popupMenu.add(quitItem);
			
			// 2、创建动作事件监听器(awt的古老操作)
			ActionListener actionListener = new ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					// 多次使用显示和隐藏设置false
					Platform.setImplicitExit(false);
					
					// 获得按钮并执行相应操作
					MenuItem item = (MenuItem) e.getSource();
					if (item.getLabel().equals("退出")) {
						// 移除托盘图标
						SystemTray.getSystemTray().remove(trayIcon);
						// 关闭应用
						Platform.exit();
						// 延迟500毫秒关闭进程
						Timeline timeline = new Timeline();
						timeline.setCycleCount(1);
						timeline.setAutoReverse(false);
				    	KeyFrame keyFrame = new KeyFrame(Duration.millis(500), new EventHandler<ActionEvent>() {
				            public void handle(ActionEvent t) {	
				            	// 彻底退出进程
				            	System.exit(0);
				            }
				        });
				    	timeline.getKeyFrames().clear();
				    	timeline.getKeyFrames().add(keyFrame);
				    	timeline.play();
					}
					
					else if (item.getLabel().equals("显示")) {
						Platform.runLater(new Runnable() {
							public void run() {
								stage.show();
							}
						});
					}
					
					else if (item.getLabel().equals("隐藏")) {
						Platform.runLater(new Runnable() {
							public void run() {
								stage.hide();
							}
						});
					}
				}
			};
			// 3、给按钮添加动作事件监听
			showItem.addActionListener(actionListener);
			quitItem.a
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值