- 浏览: 248899 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
使用SWT创建一个菜单条,模拟实现了多级菜单,分隔符,快捷键,响应事件等功能.
代码如下:
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.SelectionEvent;
- import org.eclipse.swt.events.SelectionListener;
- import org.eclipse.swt.graphics.Image;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Menu;
- import org.eclipse.swt.widgets.MenuItem;
- import org.eclipse.swt.widgets.Shell;
- public class MenuTest {
- static Display display = new Display();
- static Shell shell = new Shell(display);
- /*
- * 创建多级菜单, 采用SWT.CASCADE样式值可以加入子菜单,采用SWT.PUSH样式值不可以加入子菜单
- */
- public static void createMenu() {
- shell.setSize(500, 500);
- shell.setText("menu test window");
- shell.setImage(new Image(display, "images/Home.png"));
- // 通过shell对象和SWT.BAR样式值来创建一个菜单条
- Menu menu = new Menu(shell, SWT.BAR);
- // 在菜单条的基础之上创建一个File的菜单
- MenuItem file = new MenuItem(menu, SWT.CASCADE);
- file.setText("&File");
- // 先在Shell上创建一个下拉框,然后将下拉框添加到File菜单上
- Menu filemenu = new Menu(shell, SWT.DROP_DOWN);
- file.setMenu(filemenu);
- // 在下拉框上创建菜单项Open
- final MenuItem openItem = new MenuItem(filemenu, SWT.CASCADE);
- openItem.setText("&Open");
- // 在shell上创建一个下拉框,并把它加到open菜单上
- Menu childmenu = new Menu(shell, SWT.DROP_DOWN);
- openItem.setMenu(childmenu);
- // 在open菜单上创建一个子菜单child
- final MenuItem childItem = new MenuItem(childmenu, SWT.PUSH);
- childItem.setText("&Child");
- // 在open菜单上创建一个子菜单dialog
- final MenuItem dialogItem = new MenuItem(childmenu, SWT.PUSH);
- dialogItem.setText("&Dialog");
- // 在菜单项之间创建一个分隔符
- new MenuItem(filemenu, SWT.SEPARATOR);
- // 在下拉框上创建菜单项Exit
- MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH);
- exitItem.setText("&Exit");
- // 设置edit菜单
- MenuItem edit = new MenuItem(menu, SWT.CASCADE);
- edit.setText("&Edit");
- Menu editmenu = new Menu(shell, SWT.DROP_DOWN);
- edit.setMenu(editmenu);
- MenuItem cutItem = new MenuItem(editmenu, SWT.PUSH);
- cutItem.setText("&Cut\tCTRL+X");
- // 设置快捷键
- cutItem.setAccelerator(SWT.CTRL + 'X');
- // 在菜单项之间创建一个分隔符
- new MenuItem(editmenu, SWT.SEPARATOR);
- MenuItem copyItem = new MenuItem(editmenu, SWT.PUSH);
- copyItem.setText("&Copy\tCTRL+C");
- // 设置快捷键
- copyItem.setAccelerator(SWT.CTRL + 'C');
- // 在菜单项之间创建一个分隔符
- new MenuItem(editmenu, SWT.SEPARATOR);
- MenuItem pasteItem = new MenuItem(editmenu, SWT.PUSH);
- pasteItem.setText("&Paste\tCTRL+V");
- // 设置快捷键
- pasteItem.setAccelerator(SWT.CTRL + 'V');
- // 设置window菜单
- MenuItem window = new MenuItem(menu, SWT.CASCADE);
- window.setText("&Window");
- Menu windowmenu = new Menu(shell, SWT.DROP_DOWN);
- window.setMenu(windowmenu);
- final MenuItem maxItem = new MenuItem(windowmenu, SWT.PUSH);
- maxItem.setText("&Max");
- // 在菜单项之间创建一个分隔符
- new MenuItem(windowmenu, SWT.SEPARATOR);
- MenuItem minItem = new MenuItem(windowmenu, SWT.PUSH);
- minItem.setText("&Min");
- // 设置help菜单
- MenuItem help = new MenuItem(menu, SWT.CASCADE);
- help.setText("&Help");
- Menu helpmenu = new Menu(shell, SWT.DROP_DOWN);
- help.setMenu(helpmenu);
- MenuItem aboutItem = new MenuItem(helpmenu, SWT.PUSH);
- aboutItem.setText("&About");
- // 添加一个option菜单,用于添加单选菜单和复选菜单
- MenuItem option = new MenuItem(menu, SWT.CASCADE);
- option.setText("&Option");
- Menu optionmenu = new Menu(shell, SWT.DROP_DOWN);
- option.setMenu(optionmenu);
- MenuItem checkItem1 = new MenuItem(optionmenu, SWT.CHECK);
- checkItem1.setText("Check1");
- MenuItem checkItem2 = new MenuItem(optionmenu, SWT.CHECK);
- checkItem2.setText("Check2");
- // 设置默认为选中
- checkItem2.setSelection(true);
- // 设置分隔符
- new MenuItem(optionmenu, SWT.SEPARATOR);
- MenuItem radioItem1 = new MenuItem(optionmenu, SWT.RADIO);
- radioItem1.setText("Radio1");
- // 设置默认为选中
- radioItem1.setSelection(true);
- MenuItem radioItem2 = new MenuItem(optionmenu, SWT.RADIO);
- radioItem2.setText("Radio2");
- // 为菜单添加相应的事件
- childItem.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- Shell parent = (Shell) maxItem.getParent().getParent()
- .getParent();
- Shell child = new Shell(parent, SWT.RESIZE | SWT.MAX);
- child.setText("child item has been clicked");
- child.setImage(new Image(display, "images/Alert.png"));
- child.setSize(400, 100);
- child.open();
- }
- @Override
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- }
- });
- // 将菜单条添加到shell上
- shell.setMenuBar(menu);
- // 弹出右键菜单
- shell.setMenu(createEditPopup());
- shell.open();
- while (!shell.isDisposed()) {
- if (display.readAndDispatch()) {
- display.sleep();
- }
- }
- display.dispose();
- }
- /*
- * 创建一个右键菜单 通过样式值SWT.POP_UP来创建一个右键弹出菜单
- */
- public static Menu createEditPopup() {
- Menu popMenu = new Menu(shell, SWT.POP_UP);
- MenuItem cutItem = new MenuItem(popMenu, SWT.PUSH);
- cutItem.setText("&Cut");
- MenuItem copyItem = new MenuItem(popMenu, SWT.PUSH);
- copyItem.setText("&Copy");
- MenuItem pasteItem = new MenuItem(popMenu, SWT.PUSH);
- pasteItem.setText("&Paste");
- cutItem.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- System.out.println("cut");
- }
- @Override
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- }
- });
- pasteItem.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- System.out.println("paste");
- }
- @Override
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- }
- });
- copyItem.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- System.out.println("copy");
- }
- @Override
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
- }
- });
- return popMenu;
- }
- public static void main(String[] args) {
- MenuTest.createMenu();
- }
- }
import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; public class MenuTest { static Display display = new Display(); static Shell shell = new Shell(display); /* * 创建多级菜单, 采用SWT.CASCADE样式值可以加入子菜单,采用SWT.PUSH样式值不可以加入子菜单 */ public static void createMenu() { shell.setSize(500, 500); shell.setText("menu test window"); shell.setImage(new Image(display, "images/Home.png")); // 通过shell对象和SWT.BAR样式值来创建一个菜单条 Menu menu = new Menu(shell, SWT.BAR); // 在菜单条的基础之上创建一个File的菜单 MenuItem file = new MenuItem(menu, SWT.CASCADE); file.setText("&File"); // 先在Shell上创建一个下拉框,然后将下拉框添加到File菜单上 Menu filemenu = new Menu(shell, SWT.DROP_DOWN); file.setMenu(filemenu); // 在下拉框上创建菜单项Open final MenuItem openItem = new MenuItem(filemenu, SWT.CASCADE); openItem.setText("&Open"); // 在shell上创建一个下拉框,并把它加到open菜单上 Menu childmenu = new Menu(shell, SWT.DROP_DOWN); openItem.setMenu(childmenu); // 在open菜单上创建一个子菜单child final MenuItem childItem = new MenuItem(childmenu, SWT.PUSH); childItem.setText("&Child"); // 在open菜单上创建一个子菜单dialog final MenuItem dialogItem = new MenuItem(childmenu, SWT.PUSH); dialogItem.setText("&Dialog"); // 在菜单项之间创建一个分隔符 new MenuItem(filemenu, SWT.SEPARATOR); // 在下拉框上创建菜单项Exit MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH); exitItem.setText("&Exit"); // 设置edit菜单 MenuItem edit = new MenuItem(menu, SWT.CASCADE); edit.setText("&Edit"); Menu editmenu = new Menu(shell, SWT.DROP_DOWN); edit.setMenu(editmenu); MenuItem cutItem = new MenuItem(editmenu, SWT.PUSH); cutItem.setText("&Cut\tCTRL+X"); // 设置快捷键 cutItem.setAccelerator(SWT.CTRL + 'X'); // 在菜单项之间创建一个分隔符 new MenuItem(editmenu, SWT.SEPARATOR); MenuItem copyItem = new MenuItem(editmenu, SWT.PUSH); copyItem.setText("&Copy\tCTRL+C"); // 设置快捷键 copyItem.setAccelerator(SWT.CTRL + 'C'); // 在菜单项之间创建一个分隔符 new MenuItem(editmenu, SWT.SEPARATOR); MenuItem pasteItem = new MenuItem(editmenu, SWT.PUSH); pasteItem.setText("&Paste\tCTRL+V"); // 设置快捷键 pasteItem.setAccelerator(SWT.CTRL + 'V'); // 设置window菜单 MenuItem window = new MenuItem(menu, SWT.CASCADE); window.setText("&Window"); Menu windowmenu = new Menu(shell, SWT.DROP_DOWN); window.setMenu(windowmenu); final MenuItem maxItem = new MenuItem(windowmenu, SWT.PUSH); maxItem.setText("&Max"); // 在菜单项之间创建一个分隔符 new MenuItem(windowmenu, SWT.SEPARATOR); MenuItem minItem = new MenuItem(windowmenu, SWT.PUSH); minItem.setText("&Min"); // 设置help菜单 MenuItem help = new MenuItem(menu, SWT.CASCADE); help.setText("&Help"); Menu helpmenu = new Menu(shell, SWT.DROP_DOWN); help.setMenu(helpmenu); MenuItem aboutItem = new MenuItem(helpmenu, SWT.PUSH); aboutItem.setText("&About"); // 添加一个option菜单,用于添加单选菜单和复选菜单 MenuItem option = new MenuItem(menu, SWT.CASCADE); option.setText("&Option"); Menu optionmenu = new Menu(shell, SWT.DROP_DOWN); option.setMenu(optionmenu); MenuItem checkItem1 = new MenuItem(optionmenu, SWT.CHECK); checkItem1.setText("Check1"); MenuItem checkItem2 = new MenuItem(optionmenu, SWT.CHECK); checkItem2.setText("Check2"); // 设置默认为选中 checkItem2.setSelection(true); // 设置分隔符 new MenuItem(optionmenu, SWT.SEPARATOR); MenuItem radioItem1 = new MenuItem(optionmenu, SWT.RADIO); radioItem1.setText("Radio1"); // 设置默认为选中 radioItem1.setSelection(true); MenuItem radioItem2 = new MenuItem(optionmenu, SWT.RADIO); radioItem2.setText("Radio2"); // 为菜单添加相应的事件 childItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { // TODO Auto-generated method stub Shell parent = (Shell) maxItem.getParent().getParent() .getParent(); Shell child = new Shell(parent, SWT.RESIZE | SWT.MAX); child.setText("child item has been clicked"); child.setImage(new Image(display, "images/Alert.png")); child.setSize(400, 100); child.open(); } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); // 将菜单条添加到shell上 shell.setMenuBar(menu); // 弹出右键菜单 shell.setMenu(createEditPopup()); shell.open(); while (!shell.isDisposed()) { if (display.readAndDispatch()) { display.sleep(); } } display.dispose(); } /* * 创建一个右键菜单 通过样式值SWT.POP_UP来创建一个右键弹出菜单 */ public static Menu createEditPopup() { Menu popMenu = new Menu(shell, SWT.POP_UP); MenuItem cutItem = new MenuItem(popMenu, SWT.PUSH); cutItem.setText("&Cut"); MenuItem copyItem = new MenuItem(popMenu, SWT.PUSH); copyItem.setText("&Copy"); MenuItem pasteItem = new MenuItem(popMenu, SWT.PUSH); pasteItem.setText("&Paste"); cutItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { // TODO Auto-generated method stub System.out.println("cut"); } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); pasteItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { // TODO Auto-generated method stub System.out.println("paste"); } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); copyItem.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { // TODO Auto-generated method stub System.out.println("copy"); } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); return popMenu; } public static void main(String[] args) { MenuTest.createMenu(); } }
效果图如下:
相关推荐
- 菜单和工具栏:了解如何使用SWT创建菜单和工具栏,为应用程序添加更多的交互功能。 - 性能优化:掌握SWT/JFace的性能调优技巧,确保应用程序运行流畅。 - 国际化支持:学习如何在SWT/JFace应用中实现多语言支持...
此外,SWT还提供了丰富的组件,如树、表格、菜单等,满足各种复杂的UI需求。 通过阅读上述博客链接(https://spllot.iteye.com/blog/542928),你可以找到更具体的示例代码和更深入的讲解,进一步提升你的SWT编程...
SWT提供了丰富的组件,包括按钮、文本框、滚动条、树形视图、表格、菜单等,这些组件都可以在64位Windows系统上原生渲染。此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户...
3. 功能丰富:SWT提供了丰富的GUI组件,包括表、树、菜单、对话框等,满足大多数GUI需求。 4. 良好的事件处理机制:SWT支持事件驱动编程,允许开发者响应用户的操作。 5. 跨平台:虽然SWT依赖于特定操作系统的库,但...
- **Classpath变量**:如果计划开发多个使用SWT的项目,建议创建一个Classpath变量指向`swt.jar`的位置,以便在不同项目中重用。 - **持续性问题**:需要注意的是,上述设置的Classpath和原生库路径并不会自动应用于...
SWT提供了低级别的组件,用于创建跨平台的图形用户界面;而JFace则在此基础上提供了更高级别的抽象,简化了复杂用户界面的开发过程。 在SWT中,键盘事件的处理非常关键,尤其是对于那些依赖于键盘输入的应用程序。...
这篇博客"SWT中嵌入Word控件应用"可能就是讲述如何在Java SWT界面中集成Word编辑功能,使得用户可以直接在应用程序内部创建、编辑和查看Word文档。 SWT是Eclipse开源项目的一部分,它为Java开发者提供了一套用于...
- 使用 JFace 创建一个包含多个按钮和菜单项的工具栏,所有这些元素都映射到同一个事件处理器。 - 实现一个使用 JFace 数据绑定机制更新 UI 的示例。 #### 1.3 开发基于SWT/JFace的应用程序 - **开发流程**: -...
SWT(Standard Widget Toolkit)是Java编程环境中用于创建图形用户界面(GUI)的一种开源库,它是Eclipse项目的一部分。SWT提供了与操作系统本机UI组件的直接交互,从而能够创建性能高效、外观与操作系统的原生应用...
- **Menu组件**:用于创建菜单和子菜单。 - **Toolbar组件**:用于创建工具栏。 - **Tray组件**:用于创建系统托盘图标。 - **Tree组件**:用于创建树形结构的列表。 - **Table组件**:用于创建表格形式的数据展示。...
SWT提供了丰富的控件集合,如对话框、表单、菜单等,同时支持事件处理和布局管理。SWT与Eclipse的JFace库结合使用时,可以进一步简化UI开发,因为JFace提供了更高级别的抽象,简化了控件的创建和数据绑定。 **Java...
它们的创建也需要指定特定的风格位,如SWT.PUSH表示按下按钮,SWT.BORDER表示带边框。 3. 进行SWT开发前的环境设置 在Eclipse中开发SWT应用,需要将SWT库(swt.jar)添加到项目的类路径中。通常,SWT库位于Eclipse...
- **UI设计**:使用SWT创建基本的UI组件,再利用JFace进行进一步的扩展和定制。 - **事件处理**:编写事件处理器来响应用户的各种操作。 - **数据绑定**:利用JFace的数据绑定机制来同步UI与后端数据。 - **测试与...
通过查看源代码,我们可以学习到如何利用SWT创建窗口、控件、布局管理等,以及如何处理事件和线程。源码还可以帮助我们了解SWT如何与操作系统底层交互,实现原生的外观和性能。 其次,预编译的jar文件是直接在项目...
- **Menu**: 用于创建菜单栏、弹出菜单和菜单项,支持快捷键和事件处理。 3. **事件处理**: - SWT使用监听器模型处理用户交互。例如,`SelectionListener`用于监听按钮点击事件,`KeyListener`和`MouseListener`...
总之,“记事本(Java SWT)”是一个展示SWT强大功能的应用实例,通过它,开发者不仅可以学习到如何使用SWT创建丰富的用户界面,还能了解到如何在Java环境下实现类似Windows记事本的功能,这对于提升Java GUI编程...
在SWT中,JNI库扮演了关键角色,它使得Java代码能够调用操作系统提供的API,以实现与原生UI组件的交互,如窗口、按钮、菜单等。在MacBook M1上,由于硬件架构的变化,需要使用专门为aarch64架构编译的jnilib文件,...
这个例子展示了如何使用SWT创建一个基本的折叠菜单。在实际项目中,可能还需要处理更多细节,如动态加载数据、菜单项的点击事件、以及自定义样式等。SWT提供的丰富API使得开发者能够灵活地定制和扩展用户界面,满足...
例如,可以使用`org.eclipse.jface.window.ApplicationWindow`作为基础类,创建一个带有菜单和工作区的窗口。以下是一个简化的JFace "Hello world"示例: ```java import org.eclipse.jface.window....
SWT(Standard Widget Toolkit)是Java编程中用于创建桌面应用程序用户界面的一种库,它是Eclipse项目的一部分,提供了丰富的图形用户界面元素,使得开发者能够构建功能强大的、与平台无关的Java应用。SWT的设计目标...