Swing 窗口的最小化到系统图标与还原
2014年2月26日 13:01:47
一个上午的功夫,终于折腾好了。
上午主要是卡在监听事件的参数问题。当时脑子不好使,忘记事件是自己构造的,傻傻的测试了半天,如何传递窗口的参数
等中午解决的时候,又卡在系统托盘图标无法移除。 最后找到原因,最小化的代码摘抄之网络上,但是该代码的 执行逻辑有问题,再调整以后,总算变好。源代码中的移除时 对象为null,导致问题。调整对象创建的顺序即可解决。
设置窗体的图标时,网络上推荐:本人测试无法使用。一直为空
URL url = this.getClass().getResource("/images/01.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(url);
this.setIconImage(img);
实际中:可以使用
Image img = Toolkit.getDefaultToolkit().getImage("c:/1.jpg");
this.setIconImage(img);
##########################3
2014年2月26日 14:47:54 图形界面做好了,测试OK。

讲几点文章开头的问题和收获
实现系统托盘的功能代码
// TODO Auto-generated method stub
// 窗口最小化时执行
this.setVisible(false);
TrayIcon trayIcon = null;
SystemTray tray = null;
if (SystemTray.isSupported()) // 判断系统是否支持系统托盘
{
tray = SystemTray.getSystemTray(); // 创建系统托盘
Image image = Toolkit.getDefaultToolkit().getImage("./config/1.jpg");// 载入图片,这里要写你的图标路径哦 // 创建弹出菜单
PopupMenu popup = new PopupMenu();
// 主界面选项
MenuItem mainFrameItem = new MenuItem("主界面");
// 退出程序选项
MenuItem exitItem = new MenuItem("退出程序"); trayIcon = new TrayIcon(image, "SdS", popup);// 创建trayIcon
trayIcon.setImageAutoSize(true);//自动设置图片大小 // 主界面执行的事件,回复窗口
ActionListener listener = new ShowJF(this, tray, trayIcon); mainFrameItem.addActionListener(listener); exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JOptionPane.showConfirmDialog(null, "确定退出系统") == 0) { Runtime run = Runtime.getRuntime(); try {
run.exec("taskkill /im SdsServer.exe /f /t");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} System.exit(0);
}
}
}); popup.add(mainFrameItem);
popup.add(exitItem); trayIcon.addActionListener(listener);
try {
tray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
}
} }
系统托盘
双击托盘的事件
package cn.wuwenfu.swing; import java.awt.Frame;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JFrame; public class ShowJF implements ActionListener{
private JFrame jf;
private SystemTray st;
private TrayIcon ti; public ShowJF(JFrame jf,SystemTray st,TrayIcon ti){
this.jf=jf;
this.st=st;
this.ti=ti; } @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub jf.setVisible(true);
st.remove(ti);
jf.setExtendedState(Frame.NORMAL); //恢复窗口时自动弹出,否则只能在任务栏显示 } }
双击托盘的事件
在事件中有一个remove方法,我之前的遇到的问题是:调用这个remove方法时,传递的对象TrayIcon是空。所以屡屡报错。
另外一个就是问题: setVisible方法,只能保证程序显示在任务栏,没有弹出主界面。 所以必须添加一个setExtendedState方法
第三个问题:窗体图标的问题,网络的方法报错,省去URL反而可行。 原因未明。
问题的解决,也就是我今天的收获。
Swing 窗口的最小化到系统图标与还原的更多相关文章
- C#窗口实现最小化到系统托盘
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- electron监听系统托盘,electron是否最小化到系统托盘
在项目中需要判断窗口是否最小化在系统托盘上,任务栏那已经关闭,查了一晚上的api,始终找不到可以调用的方法,最后绞尽脑汁想到了一个办法,那就是在点右上角的关闭按钮时,加个全局变量,用来标识已经最小到系 ...
- C# WinForm窗口最小化到系统托盘
* C# WinForm窗口最小化到系统托盘http://hi.baidu.com/kfxtgtqyapouyze/item/8ccfdcd5a174a7312a35c7c3 主要功能:(1).程序启 ...
- Ubuntu 16.04 启用 点击Launcher图标,窗口实现最小化 功能
安装了Ubuntu之后,要是每次都点击最小化按钮来实现窗口的最小化,操作起来很不方便,那么怎么样才能方便操作呢, Ubuntu 16.04 本身支持 点击应用程序Launcher图标实现最小化 功能, ...
- Delphi 7下最小化到系统托盘
在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789 _NOTIFY ...
- WPF应用最小化至系统托盘运行
原文:WPF应用最小化至系统托盘运行 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lordwish/article/details/5178889 ...
- Delphi 7下最小化到系统托盘(主要是WM_TRAYMSG和WM_SYSCOMMAND消息)
在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789 _NOTIFY ...
- 将 VMware 最小化到系统托盘
1, 下载 Trayconizer官网地址: http://www.whitsoftdev.com/trayconizer/下载地址: http://www.whitsoftdev.com/files ...
- 将Mozilla ThunderBird最小化到系统托盘(转载)
转自:http://be-evil.org/mozilla-thunderbird-minize-to-tray.html Mozilla ThunderBird是一款非常不错的邮件客户端,但是其在默 ...
随机推荐
- 加密Web.Config配置文件
protected void btnPassWord_Click(object sender, EventArgs e) { //加密 Configuration config = WebConfig ...
- 转 oraenv
代码如下: lines, characters #!/bin/sh # # Get the machine type and then set up ORATAB and TNS_ADMIN vari ...
- 第2课 Linux操作系统简介
1. Linux操作系统的构成 (1)内核(kernel) ①操作系统的核心,负责管理系统的进程.内存.设备驱动程序.文件和网络系统. ②控制系统和硬件之间的相互通信. ③决定着系统的性能和稳定性. ...
- UIScrollView 和 UIPageControl
UIScrollView [滚动视图]非常重要 UIScrollView是滚动视图,是其它带有滚动功能视图的父类, 本身不显示或者只显示背景,主要负责子视图的滚动和翻页. 一.常用属性 1.基本方法 ...
- HTML中为何P标签内不可包含DIV标签? (转)
起因:在做项目时发现原本在DW中无误的代码到了MyEclipse6.0里面却提示N多错误,甚是诧异.于是究其原因,发现块级元素P内是不能嵌套DIV的. 深究:我们先来认识in-line内联元素和blo ...
- Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???
参考:http://www.cnblogs.com/oceanxing/p/3938443.html https://developer.mozilla.org/zh-CN/docs/Web/Java ...
- 常用HQL集锦
1.根据ID查询某"一个"实体类 方法1: String hql = "From ClassEntity as c where c.id=?"; ClassEn ...
- appium通过WiFi连接真机进行测试
http://www.th7.cn/Program/Android/201507/514602.shtml appium通过WiFi连接真机进行测试 2015-07-24 19:43:07CSDN ...
- centos7中yum安装ntfs-3g
CentOS默认源里没有ntfs3g,想要添加ntfs支持,无非是自己下载编译安装或者加源yum安装. 新安装了一个CentOS7,用的是添加aliyun的epel源来yum安装的方式,简单易行. 1 ...
- SpingMvc 中文乱码 post 方式解决方案
Web.xml <!-- spring 中文乱码问题 --> <filter> <filter-name>encodingFilter</filter-nam ...