下面我们创建一个最基本的视图,表格视图,然后显示用户信息。
我们需要做这样几件事情:
1、在View.java中定义TabelViewer,为该表格视图创建标题,表格的列,同时还需要为它提供ContentProvider和LabelProvider
2、就是创建上面的ContentProvider和LabelProvider,这两个class的作用就是为表格视图提供数据的,其中LabelProvider就是将数据对应到表格的列上。
3、创建模型,为我们的表格视图提供数据。这里的模型就是一些POJO。
下面看看具体代码:
private UserLabelProvider labelProvider ;
private TableViewer viewer ;
public TableViewer getViewer() {
return viewer;
}
@Override
public void createPartControl(Composite parent) {
GridLayout layout = new GridLayout(1, false);
parent.setLayout(layout);
createViewer(parent);
List<TdUser> userList = ModelProvider.getInstance().getUsers() ;
viewer.setInput(userList);
getSite().setSelectionProvider(viewer);
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = GridData.FILL;
viewer.getControl().setLayoutData(gridData);
}
private void createViewer(Composite parent){
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
createColumns(viewer);
viewer.setContentProvider(new UserContentProvider());
labelProvider = new UserLabelProvider();
viewer.setLabelProvider(labelProvider);
}
private void createColumns(final TableViewer viewer){
Table table = viewer.getTable();
String[] titles = { "ID","类型", "姓名", "性别","联系方式"};
int[] bounds = { 50, 100, 100, 50 , 100 } ;
for (int i = 0; i < titles.length; i++) {
final int index = i;
final TableViewerColumn viewerColumn = new TableViewerColumn(
viewer, SWT.NONE);
final TableColumn column = viewerColumn.getColumn();
column.setText(titles[i]);
column.setWidth(bounds[i]);
column.setResizable(true);
column.setMoveable(true);
viewer.refresh();
}
table.setHeaderVisible(true);
table.setLinesVisible(true);
}
这里给出了View.java中的关键属性和方法。
private TableViewer viewer;就是定义表格查看器,createPartControl这个方法是ViewPart中定义的,
我们需要覆盖该方法,以便定义我们自己的视图,在该方法中,我们实例化viewer,并设定布局。
createViewer是具体的实例化viewer的方法,在该方法中还设定了viewer的内容提供者和标签提供者。
createColumns方法是创建表格的列,同时包括定义表格的标题部分。
注意:我们需要注意在createPartControl中有这样一行代码:viewer.setInput(userList);
该代码的作用就是设定表格的数据源。
另外,我们看看UserContentProvider和UserLabelProvider代码:
public class UserContentProvider implements IStructuredContentProvider {
@Override
public Object[] getElements(Object inputElement) {
List<TdUser> list = (List<TdUser>) inputElement;
System.out.println(list.size());
return list.toArray();
}
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
这个class看起来比较简单,它的作用就是将输入转变成一个数组。
public class UserLabelProvider extends LabelProvider implements
ITableLabelProvider {
private Color systemColor;
public UserLabelProvider() {
systemColor = Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW);
}
public String getColumnText(Object element, int columnIndex) {
System.out.println("执行了方法:");
TdUser user = (TdUser) element;
switch (columnIndex) {
case 0:return user.getSrid().toString() ;
case 1:return user.getUtype();
case 2:return user.getName();
case 3:return user.getSex();
case 4:return user.getPhone();
default:throw new RuntimeException("Should not happen");
}
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
}
这个class的作用将模型的数据对应到表格的相应的列上。
至此,一个包含表格查看器的视图创建好了,我们可以看看效果了:
另外,我们还在ApplicationWorkbenchWindowAdvisor中覆盖了一个方法postWindowCreate
@Override
public void postWindowCreate() {
super.postWindowCreate();
Shell shell = getWindowConfigurer().getWindow().getShell();
Rectangle screenSize = Display.getDefault().getClientArea();
Rectangle frameSize = shell.getBounds();
shell.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
}
它的作用就是将我们的程序窗口在屏幕上居中显示。
- 大小: 60.7 KB
分享到:
相关推荐
1. 创建视图类:首先,你需要创建一个新的Java类,这个类将作为你的属性视图。在这个类中,你需要重写`createPropertySheet()`方法,该方法用于创建和设置属性页的样式和内容。 2. 实现适配器:为了提供自定义的...
RCP 打开视图的不同实例,并设置不同的值 ,创建一个视图,里面布局用了个tableviewer,通过一个Action,按钮打开该视图,每次打开的视图的内容可设置不同。 说明文档为 ...
标题中的"RCP中adapter实现属性视图"意味着我们要在RCP应用中创建一个属性视图,用于展示对象的各种属性。属性视图通常是一个独立的窗口部件,显示选定对象的相关属性,如名称、类型、状态等。通过适配器,我们可以...
Eclipse RCP 的视图机制是其核心机制之一,提供了多种视图类型和视图之间的交互机制。在 Eclipse RCP 中,视图可以是以下几种类型: 1. Part:Eclipse RCP 的基本视图单元,提供了基本的用户界面元素。 2. View:...
Eclipse RCP(Rich Client Platform)是一个用于构建桌面应用程序的强大框架,它允许开发者创建复杂的、可扩展的应用程序。本教程将深入探讨如何在Eclipse RCP程序中实现ViewPart的占位功能,这对于构建具有多视图的...
学习这些示例,RCP初学者可以逐步掌握如何在Java环境中利用RCP框架搭建桌面应用,包括创建视图和对话框、实现用户交互、以及增强输入体验等功能。每个示例都应包含源代码和详细的注释,方便学习者跟踪和理解代码逻辑...
创建一个rcp工程,模板使用有一个view的 step2.创建popupMenu step2_1.新建类Action1: step2_2.添加扩展点: 好的step2已经结束了,现在您可以运行一下程序,看看效果. 接下来将要进行的是,只有选中Three时...
6. 创建视图(View) - 视图是RCP应用程序中显示数据和提供交互操作的区域。开发者可以通过继承`ViewPart`类并实现其方法来创建自定义视图。视图可以在透视图(Perspective)中打开和关闭,通过`IViewRegistry`和`...
在本实例中,我们将学习如何搭建RCP环境,创建视图、编辑器和透视图,以及如何实现窗口和菜单的交互逻辑。 接下来,MySQL是一种广泛使用的开源关系型数据库管理系统,以其性能、稳定性和易用性而备受青睐。在本实例...
在"菜鸟Eclipse RCP学习之路"中,初学者应该会了解到如何创建一个新的Eclipse RCP项目。这通常涉及到以下几个步骤: 1. 安装Eclipse IDE for RCP and RAP Developers版本,这是一个专门为RCP开发定制的集成开发环境...
6. **插件开发**:RCP的插件开发是其核心特色之一,开发者可以利用Eclipse的插件开发工具创建自定义功能。图片可能会展示插件开发的流程,包括插件声明、类定义和API使用等。 7. **可定制性与可扩展性**:RCP的灵活...
3. **创建视图(View)**:RCP应用中的显示组件称为视图,你可以创建一个新的视图来展示JAVA3D动画。右键点击工程,选择"New" > "Other",然后在"Plug-in Development"中选择"View",输入视图的ID和名称。 4. **...
Eclipse RCP的核心特性之一是它的灵活性和可扩展性。这种灵活性体现在多个方面,例如通过插件机制可以轻松地添加新功能或修改现有行为。此外,Eclipse RCP还支持多种UI组件和技术,如Swing和SWT,这使得开发者可以...
在“RCP中文入门教程.pdf”中,你可能会学习到如何创建一个新的RCP项目,编写插件,定义扩展点,创建视图和编辑器,以及如何管理和配置用户的首选项。教程还可能涵盖如何调试和打包RCP应用,以及如何利用Eclipse的...
- 使用Eclipse IDE进行RCP开发,因为它内置了对RCP的支持,包括插件管理、透视图编辑、视图和编辑器创建等工具。 - PDE(Plug-in Development Environment)是Eclipse中专门用于RCP和OSGi开发的工具集。 通过学习...
总结起来,将JFreeChart报表集成到RCP应用涉及引入依赖、创建视图、绘制和展示图表,以及可能的交互功能实现。这不仅可以提升RCP应用的数据可视化能力,还能为用户提供更直观的数据解读体验。通过实践和不断探索,你...
3. **创建工具栏(Creating the Toolbar)**:在工作台的视图或编辑器中,通过`IToolBarManager`接口创建工具栏实例,并添加到相应的视图或编辑器上。 4. **添加按钮(Adding Buttons)**:利用`IToolItem`类,为每...
Eclipse Rich Client Platform (RCP) 是一个用于构建桌面应用程序的框架,它基于 Eclipse IDE 平台,允许开发者利用 Eclipse 的强大功能和丰富的插件系统来创建自定义的、可扩展的应用程序。Eclipse RCP 的核心理念...
2. **理解工作台结构**: 学习如何创建视图、编辑器以及透视图,并了解它们之间的交互。 3. **事件模型**: 了解RCP中的事件模型,如何通过命令(Command)和事件(Event)进行交互。 4. **服务(Service)机制**: ...