Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java GUI 设计
» SWT
打印话题 寄给朋友 订阅主题 |
作者 | swt tray demo:右键菜单,单击隐藏,所有事件的例子 |
VirusCamp
发贴: 33 积分: 1 |
于 2005-02-28 12:32
这是我看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){ } } JBuilder使用技巧 |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
4843 | swt tray demo:右键菜单,单击隐藏,所有事件的例子 | VirusCamp | 3545 | 2005-02-28 12:32 |
3885 | Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 | cnfree | 10 | 2005-02-28 13:43 |
3737 | Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 | rainmoist | 53 | 2005-02-28 15:35 |
4097 | Re:swt tray demo:右键菜单,单击隐藏,所有事件的例子 | cnfree | 194 | 2005-02-28 17:24 |
已读帖子 新的帖子 被删除的帖子 |
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 |