本文主要介绍JFace AbstractTableViewer 控件的分页,采用数据库分页,分页数据封装在一个Page<T>对象中,子类只需要实现抽象方法doSplitPageQuery,获取分页数据即可,伪代码如下:
/**
* 含分页的表格控件封装
*
* @author <a href="mailto:brofe.pan@gmail.com">brofe</a>
* @since 2010-12-19
* @version v 1.0
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public abstract class SplitPageTableViewer<T> {
protected AbstractTableViewer tableViewer;
protected SplitPageUI<T> splitPageUI;
protected Composite parent;
protected Composite tableComposite;
protected Group tableGroup;
protected String title;
protected Page<T> page = new Page(Constants.DEFAULT_PAGE_SIZE);
protected double defaultFirstHeight = 0.88;
protected double defaultSecondHeigth = 0.12;
public SplitPageTableViewer(Composite parent, String title) {
this.parent = parent;
this.title = title;
this.draw();
}
public SplitPageTableViewer(Composite parent, String title, double defaultFirstHeight, double defaultSecondHeigth) {
this.parent = parent;
this.title = title;
this.defaultFirstHeight = defaultFirstHeight;
this.defaultSecondHeigth = defaultSecondHeigth;
this.draw();
}
private void draw() {
tableGroup = new Group(parent, SWT.FILL);
tableGroup.setLayout(new FillLayout());
tableGroup.setText(title);
Composite composite = new Composite(tableGroup, SWT.FILL);
composite.setLayout(new FillLayout());
SashForm sashForm = new SashForm(composite, SWT.FILL | SWT.VERTICAL);
sashForm.setLayout(new GridLayout(1, false));
sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
tableComposite = new Composite(sashForm, SWT.NONE | SWT.FILL);
tableComposite.setLayout(new FillLayout());
tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
splitPageUI = new SplitPageUI<T>() {
@Override
public void doPageQuery() {
doSplitPageQuery();
}
};
splitPageUI.createSplitPageUI(sashForm, page);
sashForm.setWeights(new int[] {
(int) (Constants.RECT.width * defaultFirstHeight),
(int) (Constants.RECT.width * defaultSecondHeigth)
});
sashForm.SASH_WIDTH = 0;
}
public void addTableViewer(AbstractTableViewer tableViewer) {
this.tableViewer = tableViewer;
this.layout();
}
protected void layout() {
tableComposite.layout();
}
public abstract void doSplitPageQuery();
public Composite getTableComposite() {
return tableComposite;
}
public Page<T> getPage() {
return page;
}
public void setPage(Page<T> page) {
this.page = page;
this.splitPageUI.setPage(page);
}
public SplitPageUI<T> getSplitPageUI() {
return splitPageUI;
}
public Group getTableGroup() {
return tableGroup;
}
}
// 使用方法如下:
final SplitPageTableViewer sptv = new SplitPageTableViewer<Bol>(mainComposite, "出库单") {
@Override
public void doSplitPageQuery() {
Page<Bol> page = DefaultCommonManager.getBusinessWarehouseManager().pageQueryBol(sptv.getPage(), null, bol);;
mainTableViewer.setInput(page.getResult());
sptv.getSplitPageUI().setPage(page);
}
};
// 初始化数据
Page<Bol> page = .............
BolTableViewer mainTableViewer = new BolTableViewer(this, sptv.getTableComposite(),
WarehouseApp.tableDigester.getTable(WHConstants.TEMPLATE_BOL), page.getResult());
sptv.addTableViewer(mainTableViewer);
sptv.setPage(page);
效果见截图。
- 大小: 172.6 KB
分享到:
相关推荐
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
SWT (Standard Widget Toolkit) 和 JFace 是两个用于构建 Java 应用程序的图形用户界面(GUI)的库,它们都是由 Eclipse 开源项目提供的。SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 ...
SWT (Standard Widget Toolkit) 和 JFace 是两个在Java中用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件时被广泛应用。它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计...
本教程将涵盖 SWT/JFace 的概览、目的、许可证和平台支持、SWT 和 JFace 的区别、使用 SWT/JFace 构建 GUI 应用程序、使用 SWT/JFace 管理颜色、绘图、字体、图案等内容。 SWT/JFace 的目的: SWT/JFace 的主要...
SWT/JFace开发实例
Eclipse SWT/JFace 核心应用 带书签 Eclipse SWT/JFace
SWT (Standard Widget Toolkit) 和 JFace 是 Eclipse 开发框架中的两个重要组件,它们主要用于构建图形用户界面(GUI)。SWT 是一个底层的 GUI 工具包,它提供了与操作系统直接交互的能力,使得应用程序能够拥有原生...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们由Eclipse项目维护。本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是...
5. 表格和树的模型(Table and Tree Models):SWT和JFace提供了处理表格和树数据的类,如`TableViewer`和`TreeViewer`,它们支持数据的过滤、排序和分页。 6. 事件处理(Event Handling):SWT和JFace使用监听器...
SWT/JFace是Java开发图形用户界面(GUI)的两个重要库,由Eclipse基金会维护。它们被广泛用于构建桌面应用程序,尤其是与Eclipse IDE相关的项目。本学习文档旨在介绍SWT/JFace的基础知识,帮助开发者更好地理解和...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
【SWT/JFace从入门到精通】 SWT(Standard Widget Toolkit)和JFace是Eclipse平台下用于构建图形用户界面(GUI)的两个关键库。它们为Java开发者提供了丰富的控件和高级UI功能,使创建桌面应用程序变得简单而强大。...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
基于 Java 桌面程序开发的图形库...本书主要讲解了如何使用 SWT 和 JFace 进行应用程序的开发,通过本书系统而全面的 SWT/JFace 知识学习,将帮助读者快 速开发出完美、实用的 GUI 程序,轻松完成繁琐的界面、菜单编程.
王占全,苏玲 著; ISBN:7-121-05152-4 学习 SWT/JFace 的好书!
**SWT分页的实现** 在SWT中,可以使用`Table`或`Tree`控件来实现分页效果。但是,SWT本身并不直接支持分页,所以开发者需要手动实现数据加载和切换页的功能。这通常涉及到监听用户的滚动事件,当用户滚动到一定位置...
SWT(Standard Widget Toolkit)和JFace是Eclipse开源项目中的两个重要库,主要用于构建图形用户界面(GUI)。它们提供了一种与平台无关的方式来创建Java应用程序的用户界面,特别是对于开发IDE和其他复杂的桌面应用...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建桌面应用程序的两个关键库。它们都是Eclipse IDE的一部分,提供了丰富的用户界面组件和高级功能,帮助开发者创建美观、高效的图形用户界面(GUI...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发领域中的两个重要库,主要用于构建桌面应用程序。它们都是Eclipse IDE的重要组成部分,提供了丰富的图形用户界面(GUI)组件和设计模式,使得开发者能够...