//GWT微件celltable完整示例(带翻页)
//本人写的一个带有翻页的celltable示例:
package com.infobase.client;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.Range;
import com.google.gwt.view.client.RangeChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import com.google.gwt.user.cellview.client.SimplePager;
public class CellTableExample {
/**
* A simple data type that represents a contact.
*/
class Contacts {
private Boolean bl;
private final String address;
private final Date birthday;
private String name;
public Contacts(Boolean bl,String name, Date birthday, String address) {
this.bl=bl;
this.name = name;
this.birthday = birthday;
this.address = address;
}
}
private CellTable<Contacts> table;
public Widget onInitialize() {
table = new CellTable<Contacts>();
// table.setPageSize(5);
// 增加一个单选框
Column<Contacts, Boolean> checkcolumn = new Column<Contacts, Boolean>(new CheckboxCell()) {
@Override
public Boolean getValue(Contacts object) {
return object.bl;
}
};
checkcolumn.setSortable(true);
table.addColumn(checkcolumn);
// 增加一个文本显示名字
TextColumn<Contacts> nameColumn = new TextColumn<Contacts>() {
@Override
public String getValue(Contacts object) {
return object.name;
}
};
nameColumn.setSortable(true);
table.addColumn(nameColumn, "Name");
//增加一个时间显示生日
// Add a date column to show the birthday.
DateCell dateCell = new DateCell();
Column<Contacts, Date> dateColumn = new Column<Contacts, Date>(dateCell) {
@Override
public Date getValue(Contacts object) {
return object.birthday;
}
};
dateColumn.setSortable(true);
table.addColumn(dateColumn, "Birthday");
// 增加一个文本显示地址
TextColumn<Contacts> addressColumn = new TextColumn<Contacts>() {
@Override
public String getValue(Contacts object) {
return object.address;
}
};
addressColumn.setSortable(true);
table.addColumn(addressColumn, "Address");
//增加一个选项去显示选择的
final SingleSelectionModel<Contacts> selectionModel = new SingleSelectionModel<Contacts>();
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
final Contacts selected = selectionModel.getSelectedObject();
if(selected.bl==true){
selected.bl=false;
}else{
selected.bl=true;
}
}
});
table.setSelectionModel(selectionModel);
@SuppressWarnings("deprecation")
final List<Contacts> CONTACTS = Arrays.asList(
new Contacts(false,"John", new Date(80, 4, 12), "123 Fourth Avenue"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"George", new Date(46, 6, 6), "1600 Pennsylvania Avenue"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"Joe", new Date(85, 2, 22), "22 Lance Ln"),
new Contacts(false,"Geosde", new Date(46, 6, 6), "1600 Pennsylvania Avenue"),
new Contacts(false,"Go23rge", new Date(46, 6, 6), "1600 Pennsylvania Avenue"),
new Contacts(false,"Geor23e", new Date(46, 6, 6), "1600 Pennsylvania Avenue"),
new Contacts(false,"Gr2ge", new Date(46, 6, 6), "1600 Pennsylvania Avenue")
);
table.addRangeChangeHandler(new RangeChangeEvent.Handler() {
@Override
public void onRangeChange(RangeChangeEvent event) {
Range range = event.getNewRange();
int start = range.getStart();
int length = range.getLength();
// Create the data to push into the view. At this point, you could send
// an asynchronous RPC request to a server.
List<Contacts> data = new ArrayList<Contacts>();
for (int i = start; i < start + length; i++) {
data.add(CONTACTS.get(i));
}
// Push the data into the list.
table.setRowData(start, data);
}
});
table.setVisibleRangeAndClearData(new Range(0, 5), true);
final SimplePager simplePager = new SimplePager();
simplePager.setDisplay(table);
table.setRowCount(CONTACTS.size(), true);
table.setRowData(0, CONTACTS);
VerticalPanel vPanel = new VerticalPanel();
vPanel.add(table);
vPanel.add(simplePager);
return vPanel;
}
}
分享到:
相关推荐
4. **数据绑定**:将数据源与表格关联,可以使用GWT的`CellTable`或者`FlexTable`,并利用`DataProvider`进行数据绑定。 5. **定义列**:为表格添加列,设置列的标题、宽度、数据类型,并实现自定义的列渲染器。 6...
`GWT-Advanced-Table-shell.cmd`和`GWT-Advanced-Table-compile.cmd`是批处理命令文件,分别用于启动GWT的开发模式(Shell模式)和编译GWT应用。开发模式允许开发者在浏览器中实时查看代码更改的效果,而编译模式则...
2. **GWT UI组件**:学习如何使用GWT的Widget库,如CellTable或FlexTable,创建高级表格。 3. **事件处理**:如何添加事件监听器到表格单元格,实现点击、双击等交互。 4. **数据绑定**:可能涉及使用GWT的...
GWT的Cell Widgets和CellTable允许你创建高度可定制的列表或表格,它们以数据驱动,可以高效渲染大量数据。 **5. Deferred Binding** GWT的Deferred Binding可以根据不同的浏览器或配置生成不同的代码,实现更好的...
GWT提供了`DataGrid`或`CellTable`组件,它们可以绑定数据源并显示数据。这些组件支持分页、排序和过滤等功能,使得数据浏览更加灵活。同时,`AsyncCallback`可以用于异步加载数据,确保用户体验流畅。 3. **更新...
这可能涉及到GWT中的`CellTable`或`FlexTable`组件,这些组件可以方便地构建和定制表格,包括列的定义、排序、过滤等功能。同时,数据的加载可能通过GWT的`RequestFactory`或`RPC`服务实现,这些服务允许客户端与...
- GWT的`DataGrid`和`CellTable`支持通过`CellList`或`CellTree`等数据展示控件与后台数据模型绑定,实现数据的自动更新和异步加载。 - 可以使用`AsyncDataProvider`与服务接口(`GWT-RPC`, `REST`, `JSON`)配合,...
3. **用户界面(UI)构建**:掌握GWT提供的各种UI组件,如TextBox、Button、CellTable等,以及如何使用布局管理器构建复杂的用户界面。 4. **事件处理和数据绑定**:学习GWT中的事件模型,以及如何使用数据绑定技术...
CellPanel通常与Cell库一起使用,如TreeCell、TableCell等。 3. **HorizontalPanel** HorizontalPanel 将其子组件水平排列。它是实现水平布局的简单方法,每个子组件之间的间距可以通过设置间距属性进行调整。...
项目可能使用`CellTable`或`FlexTable`展示航班信息,`VerticalPanel`或`FlowPanel`组织布局。 - **Model-View-Presenter (MVP)模式**: MVP是GWT推荐的架构模式,其中Model负责数据存储,View负责UI展示,...
2. **Cell-based UI**:GWT的Cell库允许开发者创建可重用的数据绑定组件,例如,CellTable或DataGrid可以用来展示电影列表。 四、数据模型与服务 1. **Entity Beans**:MovieCollection可能使用了GWT的持久化框架...