第六篇
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);
分享到:
相关推荐
TWaver Flex中的告警功能是该组件的一个重要组成部分,文档中讲解了告警的使用,包括告警级别、状态与统计、以及告警的呈现方式。 ### 版权声明和使用许可 文档中也明确了版权信息和版权声明,强调了文档是...
在视图组件部分,文档将介绍Network、Tree和Table三种主要组件的介绍,这些组件是构建可视化界面的核心。Network组件用于展示网络拓扑结构,Tree组件用于构建树形结构,而Table组件用于展示和操作表格数据。 数据...
- **前台 Table 组件**、**前台 Tree 组件**、**前台 Sheet 组件**、**前台 AlarmTable**、**前台 AlarmOverview 组件** 等章节详细介绍了如何将 TWaver Web 的功能与 ExtJS 的各种组件集成,以实现复杂的应用场景。...
3. **组件入门级实例**:TWaver Flex 提供了多种预定义的组件,如Network、Table 和 Tree等。这些组件可以通过简单的代码实例快速实现图形界面的基本功能。 #### TWaver Flex 开发环境 TWaver Flex 的开发环境主要...
《TWaver Java 3.7 开发者指南》是一份详尽的技术文档,旨在为开发者提供使用TWaver Java 3.7版本进行网络、图表、数据管理和用户界面设计的全面指导。TWaver Java是一个功能丰富的可视化组件库,适用于构建复杂的...
TWaver组件主要分为以下几个部分: - NetworkComponent(网络组件):用于展示网络拓扑结构,支持图形化展示网络设备和链路。 - TreeComponent(树形组件):实现树形结构的数据展示,常用于展示层次化或分组的数据...
通过以上详细介绍,可以看出 Flex Twaver 不仅提供了一套完整的组件库来满足电信网管系统的需求,还通过丰富的文档和示例帮助开发者快速上手。无论是对于初学者还是有经验的开发人员来说,都是一款值得深入探索的...
根据提供的文件信息,我们可以推断出这是一份关于TWaver™ Java Developer Guide的文档,主要介绍了TWaver™软件的相关信息及使用指南。由于标题和描述部分的信息非常有限且重复,我们将依据这部分内容来构建相关...