GWT celltable

本文提供了一个使用GWT框架创建的CellTable示例代码,该示例实现了包含翻页功能的表格展示,并集成了多种列类型如复选框、文本及日期等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值