`

GWT CellTable

阅读更多
package com.cn.client;

import java.util.ArrayList;
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.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionChangeEvent;

/**
* Entry point classes define <code>onModuleLoad()</code>.
*/

public class CellTableTest implements EntryPoint {

/**
* A simple data type that represents a contact.
*/
private static class Contact {
private String address;
private Date birthday;
private String name;
private String firstName;
private String lastName;

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public Contact(String firstName, String lastName, Date birthday,
String address) {
this.firstName = firstName;
this.lastName = lastName;
this.name = firstName + " " + lastName;
this.birthday = birthday;
this.address = address;
}

public static final ProvidesKey<Contact> KEY_PROVIDER = new ProvidesKey<Contact>() {
public Object getKey(Contact item) {
return item == null ? null : item.getName();
}
};
}
private Label selectedLabel = new Label();
public void onModuleLoad() {
// Create a CellTable.
final CellTable<Contact> cellTable = new CellTable<Contact>();
// Display n rows in one page
cellTable.setPageSize(10);
cellTable.setWidth("1024px");

// Add a selection model so we can select cells.
final MultiSelectionModel<Contact> selectionModel = new MultiSelectionModel<Contact>(
Contact.KEY_PROVIDER);
cellTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.<Contact> createCheckboxManager());
selectionModel.addSelectionChangeHandler(
          new SelectionChangeEvent.Handler() {
            public void onSelectionChange(SelectionChangeEvent event) {
              StringBuilder sb = new StringBuilder();
              boolean first = true;
              List<Contact> selected = new ArrayList<Contact>(selectionModel.getSelectedSet());
              for (Contact value : selected) {
                if (first) {
                first = false;
                } else {
                sb.append(", ");
                }
                sb.append(value.getName());
              }
              selectedLabel.setText("选择:"+sb.toString());
            }
          });

Column<Contact, Boolean> checkColumn = new Column<Contact, Boolean>(
new CheckboxCell(true, false)) {
@Override
public Boolean getValue(Contact object) {
return selectionModel.isSelected(object);
}
};
cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
cellTable.setColumnWidth(checkColumn, 10, Unit.PX);
Column<Contact, String> firstNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getFirstName();
}
};

cellTable.addColumn(firstNameColumn, "名字");
firstNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
// Called when the user changes the value.
object.setFirstName(value);
}
});
cellTable.setColumnWidth(firstNameColumn, 10, Unit.PCT);

Column<Contact, String> lastNameColumn = new Column<Contact, String>(
new EditTextCell()) {
@Override
public String getValue(Contact object) {
return object.getLastName();
}
};
lastNameColumn.setSortable(true);
cellTable.addColumn(lastNameColumn, "姓");
lastNameColumn.setFieldUpdater(new FieldUpdater<Contact, String>() {
public void update(int index, Contact object, String value) {
object.setLastName(value);
}
});
cellTable.setColumnWidth(lastNameColumn, 10, Unit.PCT);
// Add a text column to show the name.
TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.getFirstName() + " " + object.getLastName();
}
};
cellTable.addColumn(nameColumn, "全名");
cellTable.setColumnWidth(nameColumn, 20, Unit.PCT);
// Add a date column to show the birthday.
DateCell dateCell = new DateCell();
Column<Contact, Date> dateColumn = new Column<Contact, Date>(dateCell) {
@Override
public Date getValue(Contact object) {
return object.birthday;
}
};
cellTable.addColumn(dateColumn, "生日");
cellTable.setColumnWidth(dateColumn, 40, Unit.PCT);
// Add a text column to show the address.

TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
@Override
public String getValue(Contact object) {
return object.address;
}
};
cellTable.addColumn(addressColumn, "地址");
cellTable.setColumnWidth(addressColumn, 50, Unit.PCT);
// Associate an async data provider to the cellTable
// XXX: Use AsyncCallback in the method onRangeChanged
// to actaully get the data from the server side
AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>() {
@Override
protected void onRangeChanged(HasData<Contact> display) {
// int start = display.getVisibleRange().getStart();
// int end = start + display.getVisibleRange().getLength();
// end = end >= CONTACTS.size() ? CONTACTS.size() : end;
// List<Contact> sub = CONTACTS.subList(start, end);
List<Contact> subs = new ArrayList<Contact>();
Contact c1 = new Contact("王", "栋", new Date(), "张家口下花园村");
Contact c2 = new Contact("张", "强", new Date(), "张家港市张家港村");
Contact c3 = new Contact("王", "小鹏", new Date(), "河北省保定市宝莲灯村");
Contact c4 = new Contact("时", "亮", new Date(), "北京市海淀区");
Contact c5 = new Contact("王", "小贺", new Date(), "承德市朝阳区");
Contact c6 = new Contact("李", "东墙", new Date(), "北京市花园村");
Contact c7 = new Contact("赵", "大胆", new Date(), "北京市花园村");
Contact c8 = new Contact("张", "启灵", new Date(), "北京市花园村");
Contact c9 = new Contact("王", "胖子", new Date(), "北京市花园村");
Contact c10 = new Contact("谢", "子扬", new Date(), "北京市昌平区谢家屯");
Contact c11 = new Contact("齐", "殿", new Date(), "北京市海淀区西北旺村");
Contact c12 = new Contact("楚", "穆", new Date(), "北京市亚运村");
Contact c13 = new Contact("冰", "窟窿", new Date(), "北京市奥运村");
subs.add(c1);
subs.add(c2);
subs.add(c3);
subs.add(c4);
subs.add(c5);
subs.add(c6);
subs.add(c7);
subs.add(c8);
subs.add(c9);
subs.add(c10);
subs.add(c11);
subs.add(c12);
subs.add(c13);
updateRowData(0, subs);
}
};
provider.addDataDisplay(cellTable);
// provider.updateRowCount(CONTACTS.size(), true);

SimplePager pager = new SimplePager();
pager.setDisplay(cellTable);

VerticalPanel vp = new VerticalPanel();
HorizontalPanel hp = new HorizontalPanel();
Button cellTableButton = new Button("提交");
cellTableButton.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
String select = selectedLabel.getText();
Window.alert(select);
/*
String[] selectArray = select.split(",");
if(selectArray!=null && selectArray.length>0){
for(int i=0;i<selectArray.length;i++){
Window.alert(selectArray[i]);
}
}
*/
}

});
hp.add(selectedLabel);
hp.add(cellTableButton);
vp.add(hp);
vp.setCellHorizontalAlignment(hp, HorizontalPanel.ALIGN_RIGHT);
vp.add(cellTable);

vp.add(pager);
vp.setCellHorizontalAlignment(pager, HorizontalPanel.ALIGN_CENTER);
// Add it to the root panel.
RootPanel.get().add(vp);
}
}
分享到:
评论
2 楼 tomhat 2011-12-30  
ccx410 写道
安装gwt报错,unable to retrieve osgi.bundle,com.google.gwt.eclipse.sdkbundle如何解决

你是不是在linux下安装的gwt.如果不是主要原因可能是网速不行。要不直接找那个包先安装了在试试gwt。
我安装2.0.4时一次就通过了。在装2.4时公司就不行。家里网速好就安装好乐。
1 楼 ccx410 2011-12-19  
安装gwt报错,unable to retrieve osgi.bundle,com.google.gwt.eclipse.sdkbundle如何解决

相关推荐

    网页表格组件 GWT Advanced Table_Table_

    4. **数据绑定**:将数据源与表格关联,可以使用GWT的`CellTable`或者`FlexTable`,并利用`DataProvider`进行数据绑定。 5. **定义列**:为表格添加列,设置列的标题、宽度、数据类型,并实现自定义的列渲染器。 6...

    基于java的网页表格组件 GWT Advanced Table.zip

    `GWT-Advanced-Table-shell.cmd`和`GWT-Advanced-Table-compile.cmd`是批处理命令文件,分别用于启动GWT的开发模式(Shell模式)和编译GWT应用。开发模式允许开发者在浏览器中实时查看代码更改的效果,而编译模式则...

    基于Java的实例源码-网页表格组件 GWT Advanced Table.zip

    2. **GWT UI组件**:学习如何使用GWT的Widget库,如CellTable或FlexTable,创建高级表格。 3. **事件处理**:如何添加事件监听器到表格单元格,实现点击、双击等交互。 4. **数据绑定**:可能涉及使用GWT的...

    GWT入门和进阶

    GWT的Cell Widgets和CellTable允许你创建高度可定制的列表或表格,它们以数据驱动,可以高效渲染大量数据。 **5. Deferred Binding** GWT的Deferred Binding可以根据不同的浏览器或配置生成不同的代码,实现更好的...

    GWT DEMO 增删改查

    GWT提供了`DataGrid`或`CellTable`组件,它们可以绑定数据源并显示数据。这些组件支持分页、排序和过滤等功能,使得数据浏览更加灵活。同时,`AsyncCallback`可以用于异步加载数据,确保用户体验流畅。 3. **更新...

    GWT操作数据库例子

    这可能涉及到GWT中的`CellTable`或`FlexTable`组件,这些组件可以方便地构建和定制表格,包括列的定义、排序、过滤等功能。同时,数据的加载可能通过GWT的`RequestFactory`或`RPC`服务实现,这些服务允许客户端与...

    利用GWT控制创建一个表

    - GWT的`DataGrid`和`CellTable`支持通过`CellList`或`CellTree`等数据展示控件与后台数据模型绑定,实现数据的自动更新和异步加载。 - 可以使用`AsyncDataProvider`与服务接口(`GWT-RPC`, `REST`, `JSON`)配合,...

    gwt 两本 参考书 学习

    3. **用户界面(UI)构建**:掌握GWT提供的各种UI组件,如TextBox、Button、CellTable等,以及如何使用布局管理器构建复杂的用户界面。 4. **事件处理和数据绑定**:学习GWT中的事件模型,以及如何使用数据绑定技术...

    GWT中各种Panel

    CellPanel通常与Cell库一起使用,如TreeCell、TableCell等。 3. **HorizontalPanel** HorizontalPanel 将其子组件水平排列。它是实现水平布局的简单方法,每个子组件之间的间距可以通过设置间距属性进行调整。...

    GWT-Airline-scheduler:PSU高级Java项目5

    项目可能使用`CellTable`或`FlexTable`展示航班信息,`VerticalPanel`或`FlowPanel`组织布局。 - **Model-View-Presenter (MVP)模式**: MVP是GWT推荐的架构模式,其中Model负责数据存储,View负责UI展示,...

    MovieCollection

    2. **Cell-based UI**:GWT的Cell库允许开发者创建可重用的数据绑定组件,例如,CellTable或DataGrid可以用来展示电影列表。 四、数据模型与服务 1. **Entity Beans**:MovieCollection可能使用了GWT的持久化框架...

Global site tag (gtag.js) - Google Analytics