//GWT微件celltable完整示例(带翻页)
//本人写的一个带有翻页的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;
}
}