此图能够充分说明TableViewer的工作过程。
写上例子就太棒了。
例子:
public class TableViewerExample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(100,100,400,200);
shell.setLayout(new FillLayout());
final TableViewer tv = new TableViewer(shell,SWT.NONE);
Table t = tv.getTable();
t.setHeaderVisible(true);
t.setLinesVisible(true);
String[] colName = {"First Name","Last Name","Age", "Num Children"};
int[] colWidth = {80,100,35,100};
for(int i=0; i<colName.length; i++) {
TableColumn tc = new TableColumn(t,SWT.NONE);
tc.setText(colName[i]);
tc.setWidth(colWidth[i]);
}
tv.setLabelProvider(new PersonTableLabelProvider());
tv.setContentProvider(new ArrayContentProvider());
tv.setInput(Person.example());
shell.open();
while(!shell.isDisposed()) {
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
class Person {
public String firstName = "John";
public String lastName = "Doe";
public int age = 37;
public Person[] childern = new Person[0];
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[] childern) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.childern = childern;
}
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", "ClayBery",41),
new Person("Lee", "ClayBery",41),
}),
new Person("Mike", "Taylor",41),
};
}
public String toString() {
return firstName +" "+ lastName;
}
}
class PersonTableLabelProvider extends LabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
Person person = (Person) element;
switch(columnIndex) {
case 0: return person.firstName;
case 1: return person.lastName;
case 2: return person.age+"";
case 3: return person.childern.length+"";
default: return "unknown"+columnIndex;
}
}
}
- 大小: 36.5 KB
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Swt/Jface库中的`tableViewer`组件来创建一个基本的表格视图。Swt(Standard Widget Toolkit)是Java中用于开发原生界面的应用程序开发工具包,而Jface是建立在Swt之上的抽象层,...
5. **排序和过滤**: `tableViewer.setComparator`可以设置排序比较器,`tableViewer.addFilter`可以添加过滤器,根据特定条件隐藏或显示表格行。 6. **定制化功能**: `tableViewer`支持自定义列宽、单元格样式,...
Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar
在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...
但是,用了这种方法CellEditors无法直接得到,因此,以前的给CellEditor加监听器从而进行单元格遍历的方法无法使用了。所以我改写了该类,从而支持ViewerColumn.setEditingSupport的方法。 如果有bug,请站内短信...
`TableViewer`是Eclipse提供的一个高级表格视图组件,它是`JFace Data Binding`包的一部分。`TableViewer`基于SWT(Standard Widget Toolkit)的`Table`控件,但提供了更多的功能和灵活性,使得数据绑定和表格操作变...
`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的TableViewer组件实现单元格的编辑功能,包括Text、Combo以及FileDialog这三种不同的编辑样式。 首先,SWT是Eclipse项目的一部分,它...
2. **Viewer Framework**:JFace的`TableViewer`和`TreeViewer`提供了强大的表格和树形视图管理,支持数据模型、过滤、排序等功能。例如,创建一个表格展示数据: ```java Table table = new Table(shell, SWT....
5. **表和树视图**:JFace的`TableViewer`和`TreeViewer`是用于展示数据的强大工具。它们支持各种操作,如排序、过滤、选择和编辑。在`org.eclipse.jface.snippets`中,你可以找到关于如何使用这些视图的实例代码。 ...
在 JFace 中,TableViewer 和 TreeViewer 扩展了这些功能,添加了数据绑定和自定义列渲染等功能。 8. **Layout Managers**:SWT 提供了多种布局管理器,如 FillLayout、GridLayout、FormLayout 等,用于控制组件在...
1. **Viewers**:JFace提供了一种模型-视图-控制器(MVC)的实现,用于构建可定制的数据查看器,如TreeViewer和TableViewer。它们允许开发者以树形或表格形式展示数据,并提供了丰富的操作,如排序、过滤和编辑。 2...
在"源码"标签中提到的,如果你需要深入理解TableViewer的实现,查看源码是很有帮助的。Eclipse的源码可以在其GitHub仓库中找到,通过研究`org.eclipse.jface.viewers.TableViewer`类及其相关类,可以了解到更多的...
4. **表和树的数据视图**:JFace的TableViewer和TreeViewer提供了对表格和树形结构数据的高级支持,包括排序、过滤和分页等功能。 5. **视图和编辑器**:在Eclipse IDE中,JFace用于创建可复用的视图和编辑器组件,...
- 视图和控制器:JFace引入了MVC(模型-视图-控制器)设计模式,分离了界面逻辑和业务逻辑,使代码更易于理解和维护。 - 表格和树视图:JFace提供了TableViewer和TreeViewer,它们提供了更高级的数据展示和操作...
JFace的TableViewer和TreeViewer提供了一种更抽象的方式来操作这些组件,包括数据绑定和排序。 7. **JFace服务**:包括Dialog、WorkbenchWindow、Action、SelectionService等,它们简化了窗口、动作和选择事件的...
1. **视图和编辑器**:JFace为构建Eclipse插件中的视图和编辑器提供了基础框架,使开发者能够专注于业务逻辑,而不是UI细节。 2. **数据绑定**:JFace提供了强大的数据绑定框架,使得UI元素和模型数据之间可以自动...
1. **模型-视图-控制器(MVC)模式**:JFace基于MVC设计模式,将数据模型、用户界面视图和控制逻辑分离,提高了代码的可维护性和可复用性。它通过DataBinding机制实现了模型和视图的自动同步。 2. **Viewer**:...
7. 视图(Views)和编辑器(Editors):在Eclipse RCP框架下,如何使用JFace创建可重用的视图和专业化的编辑器。 8. 事件处理:讲解如何注册和处理SWT和JFace事件,如SelectionEvent、FocusEvent等。 9. SWT和JFace...
3. 配置TableViewer的行为,比如编辑器、排序、过滤等。 4. 实现TableViewer的焦点处理,可能包括监听键盘事件,使用`TableViewer.setSelection()`或`TableViewer.focusCell()`方法来设置焦点单元格。 5. 在需要的...