`
hn_liuyi
  • 浏览: 32691 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)六

阅读更多

第六篇 TTable 的 高级使用

Table Cell   Renderer

就像 Swing JTable 一样,每一个 table 列都可以有一个 cell renderer 去绘制每一列的 cells Twaver table cell renderers twaver.table.renderer 中提供了一系列的预定的 table cesll renderer 去使用。

TTable table = new TTable();

table.addColumn(new TTableColumn("Index",

"Index",

new twaver.table.renderer.NumberRenderer()));

table.addColumn(new TTableColumn("color",

"Color",

new twaver.table.renderer.ColorRenderer()));

table.addColumn(new TTableColumn("date",

"Date",

new twaver.table.renderer.DateRenderer()));

TTableModel model = table.getTableModel();

model.getPublishedColumn(1).setEditable(true);

for (int i = 0; i < 10; i++) {

Vector row = new Vector();

row.addElement(new Integer(i));

row.addElement(Color.red);

row.addElement(new Date());

model.addRow(row);

}

图片

Table Cell Editor

同 样, Twaver 也提供了 Etitor 去编辑列的 cells. 提供这些功能的类为: twaver.table.editor.

TTable table = new TTable();

table.addColumn(new TTableColumn("Index",

"Index",

new twaver.table.renderer.NumberRenderer()));

table.addColumn(new TTableColumn("color",

"Color",new twaver.table.renderer.ColorRenderer()));

table.addColumn(new TTableColumn("date",

"Date",

new twaver.table.renderer.DateRenderer()));

TTableModel model = table.getTableModel();

//set color column editable.

model.getPublishColumn(1).setWrite(true);

for (int i = 0; i < 10; i++) {

Vector row = new Vector();

row.addElement(new Integer(i));

row.addElement(Color.red);

row.addElement(new Date());

model.addRow(row);

}

图片

以上的 这种写法, twaver 这帮人写技术文档真吝啬,只告诉我们这么用,让我们自己变傻子 啊。我需要其它的效果怎么办呢。不提供,我们就得自己实现了。

 

表格弹出菜单

Twaver 组件中提供了两种弹出菜单方式:表格体弹出菜单和列头右键弹出菜 单。默认的弹出菜单如下:

图片

列 头的弹出菜单

图片

默 认的表格体弹出菜单

自定义 弹出菜单,你需要创建一个 TTablePopupMenuFactory 并把她设置到 table

TTable table  = new TTable();

// 设置列头右键菜单为不显示

table.setTableHeaderPopupMenuFactory(null);

// 设置表格体右键菜单不显示

table.setTableBodyPopupMenuFactory(null);

// 改变列头弹出菜单

table.setTableHeaderPopupMenuFactory(new TTablePopupMenuFactory(){

public JPopupMenu getPopupMenu(TTable table,MouseEvent e){

   JPopupMenu menu =new JPopupMenu();

menu.add(new JMenuItem(“menu one”));

menu.add(new JMenuItem(“menu two”));

return menu;

}

});

图片

// 改变表格体弹出菜单

table.setTableBodyPopupMenuFactory(new TTablePopupMenuFactory(){

      JPopupMenu menu = new JPopupMenu();

           menu.add(new JMenuItem(“menu three”));

           menu.add(new JMenuItem(“menu four”));

      return menu;

});

图片

补充: Twaver 的官方使用文档也不厚道,太吝啬;可以如下加菜单;如

图片

;只需要修改一下代码 如: JPopupMenu popupMenu = new TPopupMenu( "Enovell" , Color. ORANGE ,

              Color. WHITE , Color. BLUE , 20);

而且另外像上面那样写菜单的话, 里面的事件监听更不好整了,代码写道那里面多乱啊。还应该新建一个类实现 TTablePopupMenuFactory 接口,再把生成的实例使用 setTableBodyPopupMenuFactory 或者 setTableHeaderPopupMenuFactory 进去。这样可以实现更好的耦合。

使用过滤器

TWaver table 有能力实现过滤数据。并且 可以同时设置几个过滤器到一个表格对象上

使用 TTableRowFilter

下面小 片段展示如何使用 table 数据过滤器

TTable table = new TTable();

table.addColumn(new TTableColumn("Index"));

table.addColumn(new TTableColumn("Color"));

table.addColumn(new TTableColumn("Date"));

TTableModel model = table.getTableModel();

for (int i = 0; i < 10; i++) {

Vector row = new Vector();

row.addElement(new Integer(i));

if(i%2==0){

row.addElement(Color.red);

}else{

row.addElement(Color.green);

}

row.addElement(new Date());

model.addRow(row);

}

图片

下面创 建一个数据过滤器,过滤出红色的行

model.addRowFilter(new TTableRowFilter(){

public boolean isVisible(TTable table, Vector rowData) {

//Note: TTable has two internal predefined columns,

//so the column index is start from 2.

Color color=(Color) rowData.get(3);

return color.equals(Color.red);

}

});

图片

补充: 还是那样, Twaver 的文档写的不全,实用的不降:过滤 器使用最为频繁的: 1.  AlarmVisibleFilter;

alarmFilter = new AlarmVisibleFilter() {

        public boolean isVisible(Alarm alarm) {

}};

table.addVisibleFilter( alarmFilter );

这个是在 AlarmTable 里面经常用

2. TElementTable 里面可以新建一个类实现 VisibleFilter 接口,把 新建类的实例加到 table 里面, elementTable.setVisibleFilter(visibleFilter); 如下: visbleFilter = new VisibleFilter(){

           public boolean isVisible(Element element) {}}

为了代码更清晰,建议单独写出一个类实现 VisibleFilter 接口。

表格的更多技巧

右键全 选整行: TTable.setSelectableOnRightClick(true)

Using Alternating Row Color

TElementTable table = new TElementTable(box){

   Public Component prepareRenderer(TableCellRenderer renderer,int row,int column){

Component result = super.prepareRenderer(renderer,row,column);

if(row%2==0){

  result.setBackground(Color.white);

}else{

   Result.setBackground(new Color(238,238,238));

}

return result;

}

}

隐藏 Grid line

// 隐藏垂直的网格线

table.setShowVerticalLines(false);

// 隐藏横着的网格线

table.setShowHorizontalLines(false);

0
3
分享到:
评论

相关推荐

    TWaver_Flex中文帮助文档

    TWaver Flex中的告警功能是该组件的一个重要组成部分,文档中讲解了告警的使用,包括告警级别、状态与统计、以及告警的呈现方式。 ### 版权声明和使用许可 文档中也明确了版权信息和版权声明,强调了文档是...

    TWaver HTML5 Developer Guide

    在视图组件部分,文档将介绍Network、Tree和Table三种主要组件的介绍,这些组件是构建可视化界面的核心。Network组件用于展示网络拓扑结构,Tree组件用于构建树形结构,而Table组件用于展示和操作表格数据。 数据...

    TWaver_Web_4.0中文开发手册

    - **前台 Table 组件**、**前台 Tree 组件**、**前台 Sheet 组件**、**前台 AlarmTable**、**前台 AlarmOverview 组件** 等章节详细介绍了如何将 TWaver Web 的功能与 ExtJS 的各种组件集成,以实现复杂的应用场景。...

    twaver flex中文文档

    3. **组件入门级实例**:TWaver Flex 提供了多种预定义的组件,如Network、Table 和 Tree等。这些组件可以通过简单的代码实例快速实现图形界面的基本功能。 #### TWaver Flex 开发环境 TWaver Flex 的开发环境主要...

    TWaver Java 3.7 Developer Guide

    《TWaver Java 3.7 开发者指南》是一份详尽的技术文档,旨在为开发者提供使用TWaver Java 3.7版本进行网络、图表、数据管理和用户界面设计的全面指导。TWaver Java是一个功能丰富的可视化组件库,适用于构建复杂的...

    Twaver java developer guide.pdf

    TWaver组件主要分为以下几个部分: - NetworkComponent(网络组件):用于展示网络拓扑结构,支持图形化展示网络设备和链路。 - TreeComponent(树形组件):实现树形结构的数据展示,常用于展示层次化或分组的数据...

    Flex Twaver 入门指南中文版

    通过以上详细介绍,可以看出 Flex Twaver 不仅提供了一套完整的组件库来满足电信网管系统的需求,还通过丰富的文档和示例帮助开发者快速上手。无论是对于初学者还是有经验的开发人员来说,都是一款值得深入探索的...

    TWare pdf TWare pdf

    根据提供的文件信息,我们可以推断出这是一份关于TWaver™ Java Developer Guide的文档,主要介绍了TWaver™软件的相关信息及使用指南。由于标题和描述部分的信息非常有限且重复,我们将依据这部分内容来构建相关...

Global site tag (gtag.js) - Google Analytics