Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java GUI 设计 » SWT  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 swt tray demo:右键菜单,单击隐藏,所有事件的例子
VirusCamp





发贴: 33
积分: 1
于 2005-02-28 12:32 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
swt的system tray,只能处理三种事件:左键单击,左键双击和右键双击,右键单击
这是我看swt 3.0.1 win32的源码所知
此demo有以下功能:
1.左键单击时 ,隐藏,显示主窗口
2.右键单击,弹出菜单

注意:
1.左键双击和右键双击是一种事件,无法区分
2.左键双击将产生以下事件:左键单击,左键双击,左键单击
3.关于弹出菜单,menu必须有一个parent,如果程序里没有任何shell,可以建一个不可见的shell专门作为menu的parent.

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.graphics.Image;

class HelloTray implements SelectionListener{

Display display;
Shell shell;
Button hello;
Tray tray;
TrayItem ti;
Menu menu;
MenuItem mi1;
MenuItem mi2;
MenuItem quit;

public HelloTray(){
display = Display.getDefault();
shell = new Shell();

FillLayout fillLayout = new FillLayout();
fillLayout.type = SWT.VERTICAL;
shell.setLayout(fillLayout);

hello = new Button(shell, SWT.NONE);
hello.setText("Hello World!");
   hello.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
       if(hello.getText().equals("Hello World!"))
         hello.setText("Clicked");
       else
         hello.setText("Hello World!");
}
});

menu=new Menu(shell);
mi1=new MenuItem(menu,SWT.PUSH);
mi1.setText("MenuItem 1");
mi1.addSelectionListener(this);
mi2=new MenuItem(menu,SWT.PUSH);
mi2.setText("MenuItem 2");
mi2.addSelectionListener(this);
quit=new MenuItem(menu,SWT.PUSH);
quit.setText("Quit");
quit.addSelectionListener(this);

//生成swt的tray
tray=display.getSystemTray();
ti=new TrayItem(tray,0);
ti.setToolTipText("This is a swt Tray!");
ti.setImage(new Image(display,"E:\\My Documents\\My Pictures\\alm.gif"));

//swt,tray的所有事件:
ti.addSelectionListener(new SelectionListener(){
//左键单击
public void widgetSelected(SelectionEvent e){
System.out.println("Tray Selcted");
//左键单击时 ,隐藏,显示主窗口
if(shell.isVisible()){
shell.setVisible(false);
}else{
shell.setVisible(true);
shell.forceActive();
}
}
//左键双击,右键双击,都是它
public void widgetDefaultSelected(SelectionEvent e){
System.out.println("Tray widgetDefaultSelected");
}
});
//右键单击,弹出菜单
ti.addListener(SWT.MenuDetect,new Listener(){
public void handleEvent(Event event){
System.out.println("SWT.MenuDetect");
menu.setLocation(display.getCursorLocation());
       menu.setVisible(true);
}
});
}

public void start(){
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

public static void main(String[] args) {
HelloTray app=new HelloTray();
app.start();
}

public void widgetSelected(SelectionEvent e){
System.out.println(e.getSource()+" selected.");
if(e.getSource()==quit){
System.out.println("Quit");
display.dispose();
System.exit(0);
}
}

public void widgetDefaultSelected(SelectionEvent e){
}
}




话题树型展开
人气 标题 作者 字数 发贴时间
4787 swt tray demo:右键菜单,单击隐藏,所有事件的例子 VirusCamp 3545 2005-02-28 12:32
3836 Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 cnfree 10 2005-02-28 13:43
3688 Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 rainmoist 53 2005-02-28 15:35
4037 Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 cnfree 194 2005-02-28 17:24

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923