SWT(JFace) Menu与Bar实现代码解析

0 下载量 54 浏览量 更新于2024-08-31 收藏 32KB PDF 举报
"该资源提供了关于SWT(Java Foundation Classes)和JFace库中创建菜单(Menu)和工具栏(Bar)的体验代码示例。通过这段代码,开发者可以了解如何在 SWT 和 JFace 环境下构建应用程序的用户界面,包括菜单项的创建、事件监听以及快捷键的设置。" 在 SWT 和 JFace 中,菜单和工具栏是构建图形用户界面(GUI)的重要组成部分。它们允许用户通过直观的方式访问应用程序的功能。以下是对给定代码段的详细解释: 1. 初始化 Display 和 Shell: - `Display display = new Display();` 创建一个用于显示 GUI 元素的 Display 对象。 - `Shell shell = new Shell(display);` 创建一个 Shell 对象,它是 SWT 应用程序的基本窗口。 2. 创建菜单栏(Menu Bar): - `Menu menuBar = new Menu(shell, SWT.BAR);` 创建一个菜单栏,参数 SWT.BAR 表明这是一个顶部菜单栏。 3. 添加菜单项(MenuItem): - `MenuItem itemHello = new MenuItem(menuBar, SWT.PUSH);` 创建一个名为 "Hello" 的普通菜单项,SWT.PUSH 指定它是一个点击式菜单项。 - `itemHello.setText("&Hello");` 设置菜单项的文本,"&" 用于定义快捷键。 - `itemHello.addListener(SWT.Selection, new Listener() {...});` 添加事件监听器,当用户选择该菜单项时触发 `System.out.println("HELLO");` 打印消息。 4. 创建级联菜单项(CASCADE): - `MenuItem itemCascade = new MenuItem(menuBar, SWT.CASCADE);` 创建一个级联菜单项,它将包含其他子菜单。 - `itemCascade.setText("&CASCADE item");` 设置级联菜单项的文本。 5. 创建子菜单(Menu): - `Menu menu = new Menu(itemCascade);` 在级联菜单项下创建一个子菜单。 - `MenuItem itemPush = new MenuItem(menu, SWT.PUSH);` 在子菜单中添加一个普通菜单项 "PUSH item"。 6. 设置快捷键: - `itemPush.setAccelerator(SWT.CTRL + 'P');` 为 "PUSH item" 设置快捷键,用户按下 Ctrl+P 将触发该菜单项。 7. 图像支持: - `Image icon = new Image(display, "path_to_image");` 可以创建一个 Image 对象来设置菜单项的图标,但代码片段在这里未完成,实际应用中需要提供正确的图像路径。 这个示例展示了 SWT 和 JFace 如何用于构建具有基本功能的菜单系统,包括普通菜单项、级联菜单项和快捷键。开发者可以根据需求扩展这个基础框架,添加更多的菜单项和功能,以创建复杂的 GUI 应用程序。

org.xml.sax.SAXParseException; systemId: file:/D:/app.uix; lineNumber: 1; columnNumber: 1; 文件提前结束。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1437) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1019) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327) at javax.xml.parsers.SAXParser.parse(SAXParser.java:328) at com.android.uiautomator.tree.UiHierarchyXmlLoader.parseXml(UiHierarchyXmlLoader.java:130) at com.android.uiautomator.UiAutomatorModel.<init>(UiAutomatorModel.java:51) at com.android.uiautomator.actions.OpenFilesAction.run(OpenFilesAction.java:55) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452) at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source) at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at com.android.uiautomator.UiAutomatorViewer.main(UiAutomatorViewer.java:78) null rootnode after parsing.

204 浏览量