关闭

java SWT界面的托盘显示

发表于:2013-8-08 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wintersweetzeng    来源:51Testing软件测试网采编

//注冊窗口監聽
shell.addShellListener(new ShellAdapter() {
//點擊窗口最小化按鈕時,窗口隱藏,托盤中顯示圖標
public void shellIconified(ShellEvent e) {
toggleDisplay(shell, tray);
}
//點擊窗口關閉時,并不終止程序,而是隱藏窗口,同時托盤中顯示圖標
public void shellClosed(ShellEvent e) {
e.doit = false; //取消關閉操作
toggleDisplay(shell, tray);
}
});
shell.setSize(320, 240);
center(shell);
shell.open();
while(!shell.isDisposed()) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
/**
* 窗口是可見狀態時,則隱藏窗口,在托盤中顯示程序圖標
* 窗口是隱藏狀態時,則顯示窗口,將托盤中圖標刪除
*/
private static void toggleDisplay(Shell shell, Tray tray) {
try {
shell.setVisible(!shell.isVisible());           //控制窗口顯示
tray.getItem(0).setVisible(!shell.isVisible()); //控制托盤圖標顯示
//如果窗口是顯示狀態
if(shell.getVisible()) {
shell.setMinimized(false);  //阻止窗口最小化
shell.setActive();          //激活窗口
}
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* 窗口居中顯示
*/
private static void center(Shell shell) {
Monitor monitor = shell.getMonitor();
Rectangle bounds = monitor.getBounds();
Rectangle rect = shell.getBounds();
int x = bounds.x + (bounds.width - rect.width)/2;
int y = bounds.y + (bounds.height - rect.height)/2;
shell.setLocation(x, y);
}
}

22/2<12
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号