- 浏览: 1220305 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ethenlong:
说的很详细,结构是比较简单,好懂...
linux设备驱动--LED驱动 -
夜里几度惆怅:
HTML中动态图片切换JQuery实现 -
彼岸花er:
博主说在培训班没学到技术,我想知道博主报的是什么培训班呢?主要 ...
IT女生的2011经历 -
jallin:
上面讲解的“Last-Modified”容易令人误解:1) 什 ...
http协议和web本质 -
shandaaiwo2:
写的太好了。
http协议和web本质
JFace Viewer 3
5.1.5. StructuredViewerStructuredViewer æ¯å表æ¥çå¨ï¼è¡¨æ ¼æ¥çå¨ï¼æ æ¥çå¨çæ½è±¡è¶ ç±»ã(åè§Figure 5-7) Figure 5-7. StructuredViewer å±æ¬¡å¾ä¸å为é常使ç¨çAPIï¼
|
5.1.6. ListViewerListViewerç±» å°è£ äºList æ§ä»¶ï¼å¯ä»¥ç¨æ¥æ¾ç¤ºå¯¹è±¡éåèä¸æ¯å符串éåãå表æ¥çå¨éè¦è®¾ç½®æ ç¾ä¾ç»å¨åå 容ä¾ç»å¨ã常ç¨APIå æ¬:ä¸é¢çå对象å°ç¨å¨ä»¥åçç¨åºä¾åä¸ã public class Person { public String firstName = "John"; public String lastName = "Doe"; public int age = 37; public Person[] children = new Person[0]; public Person parent = null; public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } public Person(String firstName, String lastName, int age, Person[] children) { this(firstName, lastName, age); this.children = children; for (int i = 0; i < children.length; i++) { children[i].parent = this; } } public static Person[] example() { return new Person[] { new Person("Dan", "Rubel", 41, new Person[] { new Person("Beth", "Rubel", 11), new Person("David", "Rubel", 6)}), new Person("Eric", "Clayberg", 42, new Person[] { new Person("Lauren", "Clayberg", 9), new Person("Lee", "Clayberg", 7)}), new Person("Mike", "Taylor", 55) }; } public String toString() { return firstName + " " + lastName; } } ä¸é¢çä¾åå建äºä¸ä¸ªå表æ¥çå¨ï¼å¹¶è®¾ç½®äºæ ç¾ä¾ç»å¨ï¼å 容ä¾ç»å¨åæåºå¨ã (åè§ Figure 5-8) 注æ: è¦ç¬ç«è¿è¡æ¤ç¨åº, ä½ å¿ é¡»æ·»å å¦ä¸å项å°ä½ çJava Build Path (æ件çæ¬å·è¦ç¬¦åå®è£ çEclipse)ã ECLIPSE_HOME/plugins/org.eclipse.core.runtime_3.1.2.jar ECLIPSE_HOME/plugins/org.eclipse.jface_3.1.1.jar ECLIPSE_HOME/plugins/org.eclipse.jface.text_3.1.2.jar ECLIPSE_HOME/plugins/org.eclipse.text_3.1.1.jar import org.eclipse.jface.viewers.*; import org.eclipse.swt.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; public class ListViewerExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("List Viewer Example"); shell.setBounds(100, 100, 200, 100); shell.setLayout(new FillLayout()); final ListViewer listViewer = new ListViewer(shell, SWT.SINGLE); listViewer.setLabelProvider( new PersonListLabelProvider()); listViewer.setContentProvider( new ArrayContentProvider()); listViewer.setInput(Person.example()); listViewer.setSorter(new ViewerSorter() { public int compare( Viewer viewer, Object p1, Object p2) { return ((Person) p1).lastName .compareToIgnoreCase(((Person) p2).lastName); } }); listViewer.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged( SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); System.out.println("Selected: " + selection.getFirstElement()); } }); listViewer.addDoubleClickListener( new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); System.out.println("Double Clicked: " + selection.getFirstElement()); } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } Figure 5-8. ListViewer example.å表æ¥çå¨å建åï¼ä½¿ç¨ setLabelProvider() æ¹æ³è®¾ç½®æ ç¾ä¾ç»å¨ï¼ä½¿ç¨setContentProvider() 设置å 容ä¾ç»å¨ã PersonListLabelProviderä½ä¸ºå 容ä¾ç»å¨, è¿åç±ååç»æçæåæ ç¾ï¼æ²¡æè¿åå¾æ ã该类ç¨åºå¦ä¸: public class PersonListLabelProvider extends LabelProvider { public Image getImage(Object element) { return null; } public String getText(Object element) { Person person = (Person) element; return person.firstName + " " + person.lastName; } } 使ç¨å 建ç ArrayContentProvideræ为å 容ä¾ç»å¨ï¼å®å°è¾å ¥çéåæ å°ä¸ºæ°ç»ãä½¿ç¨ setInput() æ¹æ³è®¾ç½®è¾å ¥æ°æ®ãæåºå¨å®ä¹äºcompare()æ¹æ³ï¼å®åºäºååè¿è¡æåºãæåï¼ä¸ºå表æ¥çå¨æ·»å äºselectionChanged çå¬å¨ådoubleClickçå¬å¨ã |
5.1.7. TableViewerTableViewer ç±»å°è£ äºTableæ§ä»¶ãè¡¨æ ¼æ¥çå¨æä¾äºå¯ç¼è¾çï¼åç´çï¼å¤åçæ¡ç®å表ãå¨å表ä¸ï¼æ¯ä¸ä¸ªæ¡ç®æ¾ç¤ºä¸ºä¸è¡åå æ ¼ãæ¯ä¸ä¸ªåå æ ¼æ¾ç¤ºäºæ¡ç®çç¸åºå±æ§ãè¡¨æ ¼æ¥çå¨éè¦é ç½®æ ç¾ä¾ç»å¨ï¼å 容ä¾ç»å¨ååä¿¡æ¯ã CheckboxTableViewer å å ¥äºå¯¹ä¸ªå«æ¡ç®æ³ç°çæ¯æï¼è¿å¯ä»¥éä¸ååéä¸æ¡ç®ç¸å ³èçå¤éæ¡ã常ç¨çAPIå æ¬:The CheckboxTableViewer 常ç¨APIå æ¬: ä¸é¢çç¨åºæ ·ä¾å建ä¸ä¸ªæ¥æååçè¡¨æ ¼æ¥çå¨ã (åè§Figure 5-9)ã Figure 5-9. TableViewer æ ·ä¾import org.eclipse.jface.viewers.*; import org.eclipse.swt.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; public class TableViewerExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("Table Viewer Example"); shell.setBounds(100, 100, 325, 200); shell.setLayout(new FillLayout()); final TableViewer tableViewer = new TableViewer( shell, SWT.SINGLE | SWT.FULL_SELECTION); final Table table = tableViewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); String[] columnNames = new String[] { "First Name", "Last Name", "Age", "Num Children"}; int[] columnWidths = new int[] { 100, 100, 35, 75}; int[] columnAlignments = new int[] { SWT.LEFT, SWT.LEFT, SWT.CENTER, SWT.CENTER}; for (int i = 0; i < columnNames.length; i++) { TableColumn tableColumn = new TableColumn(table, columnAlignments[i]); tableColumn.setText(columnNames[i]); tableColumn.setWidth(columnWidths[i]); } tableViewer.setLabelProvider( new PersonTableLabelProvider()); tableViewer.setContentProvider( new ArrayContentProvider()); tableViewer.setInput(Person.example()); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } åå»ºè¡¨æ ¼æ¥çå¨åï¼è°ç¨setHeaderVisible() å setLinesVisible() æ¹æ³ä½¿å表头å¯è§ï¼è¡¨æ ¼çº¿å¯è§ãç¶åå å ¥ååçä¿¡æ¯ãéè¿setText() å setWidth() æ¹æ³è®¾ç½®å表头çæåå宽度ã(åè§ 7.8 è, èªå¨è°æ´è¡¨æ ¼å)ã ä½¿ç¨ setLabelProvider()æ¹æ³è®¾ç½®æ ç¾ä¾ç»å¨ï¼ 使ç¨setContentProvider() æ¹æ³è®¾ç½®å 容ä¾ç»å¨ãæ ç¾ä¾ç»å¨PersonTableLabelProvider, ç¨æ¥è¿åè¡¨æ ¼æ¯ä¸åçæåæ ç¾ï¼æ²¡æè¿åå¾æ ã ç¨åºå¦ä¸: import org.eclipse.jface.viewers.*; import org.eclipse.swt.graphics.*; public class PersonTableLabelProvider extends LabelProvider implements ITableLabelProvider { public Image getColumnImage( Object element, int) { return null; } public String getColumnText(Object element, int index) { Person person = (Person) element; switch (index) { case 0 : return person.firstName; case 1 : return person.lastName; case 2 : return Integer.toString(person.age); case 3 : return Integer.toString(person.children.length); default : return "unknown " + index; } } } |
相关推荐
**JFace Viewer 知识点详解** 在Java开发领域,特别是使用Eclipse RCP(Rich Client Platform)进行桌面应用开发时,JFace是不可或缺的一部分。JFace是SWT(Standard Widget Toolkit)的一个扩展,提供了更高级别的...
3. **Data Binding**:JFace 数据绑定是将模型数据与UI元素直接关联的一种机制,它减少了手动更新界面的代码。通过IDataBindingService,开发者可以轻松地实现模型和控件之间的双向数据同步。 4. **Command ...
SWT GridViewer_1.0包是针对Java开发者的一个组件库,主要包含了两个核心的JAR文件:`org.eclipse.nebula.jface.gridviewer_1.0.0.jar`和`org.eclipse.nebula.widgets.grid_1.0.0.jar`。这两个文件提供了强大的数据...
2. **Viewer**:JFace中的Viewer是用于展示数据的组件,它可以是表、树或其他形式。Viewer提供了数据管理、排序、过滤等功能,并能与 SWT 控件如Table、Tree等无缝集成。 3. **Dialogs and Wizards**:JFace提供了...
2. **Viewers**:JFace的Viewer是一个通用的组件容器,它可以用来展示数据集合,比如TableViewer、TreeViewer等。Viewer提供了丰富的事件处理机制和扩展接口,方便自定义行为。 3. **Dialogs and Wizards**:JFace...
在Java编程领域,`jface` 是Eclipse项目的一部分,它提供了一系列的用户界面组件,使得开发者能够更容易地创建复杂的图形用户界面(GUI)。`TreeView` 是jFace中用于展示层次结构数据的一个重要控件,它允许用户以树...
在Java编程环境中,JFace库是Eclipse RCP(Rich Client Platform)的一部分,它提供了一套高级用户界面组件,如TableViewer和TreeViewer,用于构建桌面应用程序。在文档标题和描述中提到的问题主要涉及到JFace中的...
3. ** SWT/JFace 的事件模型**:SWT 和 JFace 都有自己的事件模型,允许开发者监听和处理用户操作。例如,可以注册监听器来响应按钮点击、窗口关闭等事件。 4. **Dialogs 和 Wizards**:在 SWT/Jface API 3.4 中,...
2. **Viewer Framework**:JFace的`TableViewer`和`TreeViewer`提供了强大的表格和树形视图管理,支持数据模型、过滤、排序等功能。例如,创建一个表格展示数据: ```java Table table = new Table(shell, SWT....
`org.eclipse.jface.viewers`包中的Viewer类为数据展示提供了统一的接口,可以方便地绑定数据源到视图上,如TableViewer和TreeViewer。此外,JFace还引入了`org.eclipse.jface.databinding`包,支持数据绑定,使得...
5. **Table and Tree Viewer**: JFace的TableViewer和TreeViewer是对SWT表格和树组件的增强,提供了更多的功能,如排序、过滤、分页,以及与模型数据的紧密集成。 6. **Action Framework**: JFace的动作框架允许...
6. 学习资源:SWT/JFace 3.5 API文档不仅是开发过程中不可或缺的参考,还可以配合Eclipse插件如Eclipse Help Viewer,进一步提升阅读体验。同时,开发者社区提供了丰富的教程、示例代码和论坛讨论,为学习和解决实际...
- **视图与控制器**:介绍如何创建JFace视图,利用Viewer框架展示数据,并实现相应的控制器逻辑。 - **对话框与消息框**:展示如何创建自定义对话框,以及使用标准的MessageDialog和InputDialog。 5. **第三章:...
JFace的控件如Viewer和EditPart抽象了SWT的细节,使开发者可以专注于业务逻辑而非底层实现。JFace还提供了视图、编辑器、命令和工作台等核心框架,这些都是Eclipse IDE的基础。 在学习SWT和JFace时,你需要了解它们...
源代码中可能包含JFace的使用示例,如使用Dialogs创建自定义对话框,利用Viewer框架展示和操作数据,以及运用DataBinding进行数据同步。 3. **核心应用**:在"核心应用"的标题中,我们可以期待看到一些基础和关键的...
**3. 语法分析(Syntax Analysis)** 对于更复杂的语法分析任务,如错误检测和警告提示,JFace Text Framework提供了`ILexer`和`ITokenScanner`接口。开发者可以实现这些接口,将源代码分解成一个个词法单元,并为...
例如,`org.eclipse.jface.viewers.Viewer`是JFace的核心组件,它封装了SWT的控件,并提供了模型-视图的分离,使数据和显示分离。`org.eclipse.jface.dialogs.Dialog`则是一系列对话框的基类,可以方便地创建自定义...
3. org.eclipse.jface_3.2.2.M20061214-1200.jar:JFace的主要库,包含了JFace的大部分功能。 4. org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar:这是SWT针对Windows平台的实现,包含了特定于Windows的GUI组件和...
这会涉及到JFace的Data Binding Support(DBS)和Viewer类。 ### 学习和实践 通过运行这些实例,你可以深入理解SWT和JFace的用法,学习如何设计布局、处理事件、创建自定义控件以及如何将业务逻辑与界面分离。每个...
- `Viewer`:JFace中的通用视图接口,提供了数据管理和视图更新的机制。 总结来说,SWT-JFace 3.5 API是Java GUI开发的重要工具,它提供了一套强大且灵活的接口,使得开发者可以创建出高效、美观的用户界面。通过...