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

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

阅读更多

第七 篇:使用 AlarmTable 组件

Alarm table 组件,是一个继承自 TWaver table,AlarmTable 被用于展示 alarm 对象, Alarm table 联合一个 DataBox 可以从该 DataBox 中获取所有的 alarm 对象,然后在表格的对应的列上罗列出 来。

Alarm table 是来自与 Twaver table, 所以它具有了所有的基本表格的功能,如:自定义列,排序,分页控 制,锁定,弹出菜单和过滤器。可以参考上面的表格使用

创建一个 AlarmTable 组件

通常情况下我们需要一个 DataBox 去创建一个 AlarmTable, 这样的话表格就需要连接到一个 DataBox 显示和监测预警模型的 DataBox ,根据下面的代码段可以创建一个 alarm table 组件并展示在一个 JFrame 里面

JFrame frame = new JFrame("Alarm Table");

TDataBox box = new TDataBox();

TAlarmTable table = new TAlarmTable(box);

frame.setContentPane(new JScrollPane(table));

frame.setSize(400, 100);

TWaverUtil.centerWindow(frame);

frame.show();

图片

AlarmTable 组件的构造器:

                
  

方法

  
  

描述

  
  

TAlarmTable(TDataBox box)

  
  

创建一个连接 DataBox 带有默认列的告警表格

  
  

TAlarmTable(TDataBox box,String tableName)

  
  

创建一个告警表格 , 这个告 警表格连接着一个指定的 DataBox, 并且带着一个配置在 TWaver.xml 里面的 tableName

  
  

TAlarmTable(TDataBox box,TTableColumn[] columns)

  
  

以给定的列创建一个 AlarmTable, AlarmTable 连接着一个指定的 DataBox

  

有一些默认的列,这些列 默认状态是可见的:

Alarm.PROPERTY_ALARM_ALARMID// 告警 ID

Alarm.PROPERTY_ALARMSERVERITY// 告警级别列

Alarm.PROPERTY_ACKED// 告警确认状态列,该列为复选框

Alarm.PROPERTY_ELEMENTID// 告警对象 ID

Alarm.PROPERTY_PROBABLECAUSE// 告警原因列

private static TTableColumn[] createDefaultColumns() {

return new TTableColumn[] {

createColumn(Alarm.PROPERTY_ALARMID, 60, true),// 告警 ID ,宽度 60 ,显示为 true;

createColumn(Alarm.PROPERTY_ALARMSEVERITY, 100, true),// 告警级 别列

createColumn(Alarm.PROPERTY_ACKED, 50, true).// 告警确认 状态列。

setRenderer(new AcknowledgedRenderer()),// 设置 Renderer AcknowledgedRenderer

createColumn(Alarm.PROPERTY_ELEMENTID, 100, true).

// 设置 ELEMENTID

setRenderer(new ElementIDRenderer()),// 设置 ElementIDRenderer

createColumn(Alarm.PROPERTY_PROBABLECAUSE, 300, true),// 创建告警理由列

createColumn(Alarm.PROPERTY_ACKUSERID, 80, false),

// 告警确认用户 ID 列,不显示

createColumn(Alarm.PROPERTY_CLEARUSERID, 60, false),

// 清除告警用户 ID 列,不显示

createColumn(Alarm.PROPERTY_CLEARED, 40, false),

//

createColumn(Alarm.PROPERTY_ALARMTYPE, 60, false),

// 告警类型列,不显示

createColumn(Alarm.PROPERTY_TRENDINDICATION, 40, false),

createColumn(Alarm.PROPERTY_RAISEDTIME, 120, false),

// 告警升级时间列

createColumn(Alarm.PROPERTY_ACKTIME, 120, false),

// 告警确认时间列

createColumn(Alarm.PROPERTY_CLEAREDTIME, 120, false),

// 告警清楚时间列

createColumn(Alarm.PROPERTY_LASTCHANGEDTIME, 120, false),// 告警 最新修改时间 列

createColumn(Alarm.PROPERTY_CORRELATEDALARMS, 60, false),// 告警关 联告警列

createColumn(Alarm.PROPERTY_SPECIFICPROBLEM, 200, false),//

createColumn(Alarm.PROPERTY_ADDITIONALTEXT, 200, false),//

createColumn(Alarm.PROPERTY_COMMENTS, 200, false),

// 告警注释列

createColumn(Alarm.PROPERTY_PROPOSEDREPAIRACTION, 200, false),//

};

}

private static TTableColumn createColumn

(String name, int width, boolean visible) {

return new TTableColumn(name,

TWaverUtil.getString("alarm.property." + name), width).

setVisible(visible);

}

DataBox AlarmModel 联合工作

一旦创建了关联到 DataBox AlarmTable, 她将展示该 DataBox 里面的告警信息。我们知道所有告警信息都被 DataBox alarm model 所管理。所以说, alarm table 是一个被 DataBox alarm model 所驱动的组件

在告警 model 里,每个告警都被展示到表格的一行上,现在我们创建几个告警信 息并把他们放到 alarm model 中,看看在 alarm table 上将会发生什么

Node node5 = new Node();

box.addElement(node5);

node5.getAlarmState().clear();

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

AlarmSeverity severity = TWaverUtil.getRandomNonClearedSeverity ();

Alarm alarm = new Alarm(new Integer(50 + i * 10), node5.getID(), severity);

box.getAlarmModel().addAlarm(alarm);

}

图片

设置 DataBox:public void setDataBox(TDataBox box); 这里本人做个补充: Twaver 的人不会告诉你这里有一个性能优化的大用处,如果你生成表格的时候,就把 DataBox 和表格连接起来的话,再往表格里面放数据的话,性能是很慢的,如果一开始把表格和 DataBox 分开,先往 DataBox 实例里放数据,把数据放完之后,在使用该设置 databox 的方法,把表格和 DataBox 连接起来,界面展现很快。

设置 DataBox columns 使用这个方法:

public void setDataBox(TDataBox box,TTableColumn[] columns);

使用告警过滤器

在表格的过滤器里说过了这个过滤器,可以根据 alarm 对 象的所有属性来进行过滤, return false 即隐藏, true 为可见

TAlarmTable table = new TAlarmTable(box);

table.addVisibleFilter(new AlarmVisibleFilter(){

public boolean isVisible(Alarm alarm) {

return alarm.getAlarmSeverity()==AlarmSeverity.CRITICAL;

}

});

自定义 Alarm table 组件

默认的 alarm table 已经可以很好的支持呈现现 有的告警,包括使用默认可见的列,优先的列宽, cell renderers editors ,弹出菜单等等。但是你经常会去改变默认的设置去自己特殊的需 求。 在使用表组件部分中提及的所有功能都可以自定义在这里,请详见它

这里我们给出一个例子展 示一下怎么去定义一些告警新属性并展示在 alarm table 的自定义的列中

l       添加 alarm 对象的属性“ customIcon

l       alarm table 里展示“ customIcon

l       设置 user icon renderer 属性 customIcon

l       根据用户的 list 来改变 customIcon ”属性

定义“ customIcon ”属性

我们先定义一个 CustomIcon 类来封装 customIcon ”属性信息

class CustomIcon {

private String name = null ;

private Icon icon = null ;

public CustomIcon(String name, Icon icon) {

this .name = name;

this .icon = icon;

}

String getName() {

return name;

}

void setName(String name) {

this .name = name;

}

Icon getIcon() {

return icon;

}

void setIcon(Icon icon) {

this .icon = icon;

}

}

然后我们需要将 “customIcon” 信息附贴到 alarm 对象上,你可以使用一个标准的 java bean 作为一个属性附加到 alarm 对象上,就像 Alarm.setCustomIcon Alarm.getCustomIcon 一样,如下:

f or (int i = 1; i < 5; i++) {

AlarmSeverity severity = TWaverUtil.getRandomNonClearedSeverity ();

Alarm alarm = new Alarm(new Integer(50 + i * 10), node5.getID(), severity);

alarm.putClientProperty("CustomIcon", new CustomIcon("Icon_"+i,

TWaverUtil.getIcon ("/demo/resource/images/attachment" + i + ".png")));

box.getAlarmModel().addAlarm(alarm);

}

添加“ CustomIcon ”列

为了在表格上展示 CustomIcon 属性,我们需要创建一个表格列并把它加到 table Model 中。非常简单:、

TTableColumn ownerColumn = new TTableColumn("CustomIcon", "CustomIcon");// 列 展示名字 // 和列 名都为 CustomIcon

ownerColumn.setPreferredWidth(50);

alarmTable.getTableModel().addColumn(ownerColumn);

Twaverujian 将会试着获取“ customIcon ”属性从 Alarm 对象上,该对象携带者 java beans ,如果没有发现,将会试着 从客户端属性获取,如下

图片

 

Column 设置 Renderer Editor

到目前为止,属性已经展示到了 alarm table 上,为了能够用一种更友好的方式 renderer editor 属性“ customIcon ”,我们现在创建并设置 renderer editor 到新的列上。

// 创建 设置一个 renderer

ownerColumn.setRenderer(new DefaulstTableCellRenderer(){

public Component getTableCellRendererComponent(JTable,Object value,Boolean isSelected,Boolean hasFocus,int row,int column){

JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);

if(value instanceof CustomIcon){

                                  CustomIcon owner =(CustomIcon)value;

                                  label.setIcon(owner.getIcon);

                                  label.setText(owner.getName());

}

return label;

}

});

图片

创建设置一个 editor

//1. 设 置 editable

ownerColumn.setEditable(true);

// 创建 一个 JComboBox 作为一个 Editor

JComboBox options = new JComboBox();

for(int i=1;i<5;i++){

options.addItem(new CustomIcon(“Icon_”+i,TWaverUtil.getIcon( getIcon ("/demo/resource/images/attachment" + i + ".png" )));

}

// JComboBox 创建一个 Renderer

Options.setRenderer(new DefaultListCellRenderer(){

     Public Component getListCellRendererComponent(JList list,Objcet value,int index,Boolean isSelected,Boolean cellHasFous){

  Super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus);

if(value instanceof CustomIcon){

   CustomIcon icon = (CustomIcon) value;

this.setIcon(icon.getIcon);

this.setText(icon.getName);

}

return this;

}

});

//4. 创 建 Editor 并设置到列上

ownerColumn.setEditor(new DefaultCellEditor(options));

图片

0
3
分享到:
评论

相关推荐

    flex Twaver组件使用

    TWaver组件是针对Flex和Flash平台的专业图形化组件,由Adobe公司的Flex/Flash技术构建。它为电信行业的运营支撑系统提供了一种富互联网应用(RIA)解决方案,同时也适用于电力、金融、制造、交通等多个领域的软件...

    Twaver java 4.1资源包(库+学习文档+javadoc)

    【标签】"twaver java 4.1 整合包" 表明这是一个包含Twaver 4.1所有必要组件的完整集合,包括Java库、相关的文档和API参考,是进行Java项目开发的必备资料。 【压缩包子文件的文件名称列表】: 1. **demo.bat** 和 ...

    TWaver的3d图形组件库,小demo

    通过这个"TWaver的3d图形组件库,小demo",开发者不仅可以学习到如何使用TWaver库创建3D图形,还能了解到现代Web开发中的3D数据可视化技术和最佳实践。通过研究提供的源代码,开发者可以提升自己在WebGL和JavaScript...

    TWaver_Flex中文帮助文档

    文档中也明确了版权信息和版权声明,强调了文档是ServaSoftware的专有信息,使用文档需遵循与ServaSoftware之间签订的许可协议。同时指出文档中提及的所有商标和品牌均属于其各自的所有者。 ### 注意事项 文档强调...

    twaver.js使用示例

    “twaver.js使用示例”这一标题表明了我们即将探讨的是一个关于twaver.js的实践应用案例。Twaver.js是一款强大的图形化建模和可视化库,主要用于创建复杂的网络拓扑图、流程图、组织结构图等。这个标题暗示我们将...

    TWaver“一站式”UI组件提供包括网络拓扑图、地图、设备面板图、流程图、各种Chart图表、树图、表格等各种通用组件

    使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的各种基本元素,如节点(Node)、连线(Link)等; 容器:图元都统一放置在一个容器(DataBox)中进行管理...

    TWaver文档

    - **界面交互**也是TWaver的重要组成部分之一,它提供了丰富的API来处理用户的输入事件,并且可以根据用户的操作实时更新视图。 ### 产品家族与技术栈 - TWaver支持多种技术和平台,包括**Java**、**Flex**、**...

    Twaver java 帮助文档

    Twaver java开发帮助文档,英文版的。

    Twaver Web SVG 开发说明文档

    该文档详细介绍了 Twaver Web SVG 的架构、开发流程以及常见问题解决方案等内容,旨在帮助开发者更好地理解和掌握 Twaver Web SVG 的使用方法。 #### 二、简介 ##### 2.1 TWAVER WEBSVG 结构 Twaver Web SVG 采用...

    TWAVER-最好的JAVA 图形设计组件-试用

    TWAVER是一款强大的JAVA图形设计组件,专为电信...综合这些资源,开发者不仅可以了解TWAVER的基本功能,还能通过示例代码和文档深入理解如何在自己的项目中集成和扩展TWAVER组件,以构建出高效且用户友好的图形界面。

    TWaver-Java 电信组件

    【描述】"TWaver-Java手册,单机Demo 相应的文档和接口"涵盖了该组件的使用指南、示例代码以及详细的API接口文档。手册部分将引导用户了解如何集成和操作TWaver组件,而Demo则提供了实际运行的示例,帮助开发者快速...

    最新TWaver3.1 -Java 电信组件(包含 Demo 相关文档 API接口 源码)

    刚弄到的最新版本TWaver3.1的Demo源代码(包含了DEMO运行程序,相关文档,API接口,源码,网站上没有的)...它不但提供了全部的Demo,还有相应的全部文档和源码,有了它,您完全可以根据自己的需要做出漂亮的电信组件。

    TWaver HTML5 Developer Guide

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

    twaver 官方文档

    【标题】"TWaver 官方文档"指出的是TWaver这一技术的相关官方资料,它代表了一个专注于数据可视化和图表绘制的工具。TWaver是用于创建交互式图表、网络图、流程图、地图等复杂可视化应用的JavaScript库。通过官方...

    TWaver .NET 开发指南+API(英文版)

    《TWaver .NET 开发指南+API(英文版)》是专为.NET开发者设计的一份重要参考资料,旨在帮助开发者深入理解和高效使用TWaver组件。TWaver是一个强大的数据可视化工具,尤其适用于创建复杂的图表、网络图以及地理信息...

    twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_

    标题中的"twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_"似乎是指一个基于HTML5的Twaver版本5.9.0的应用程序接口(API)文档。Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织...

    TWaver-Java 电信组件 单机Demo 相应的文档和接口

    【TWaver-Java 电信组件】是专门为电信行业设计的一款强大的可视化组件库,它提供了丰富的图形化工具,用于构建复杂的网络拓扑、设备状态监控、业务流程展示等应用。这个单机Demo是开发者和系统集成商了解和评估...

    TWaver-java-4.1最新 官网试用版jar包及Demo

    8. documents:文档目录,可能包含TWaver的用户手册、API参考等资料,帮助开发者更深入地了解和使用TWaver。 9. javadoc:Java文档目录,通常生成自源代码,提供了TWaver库的API详细说明,包括方法、类和接口的描述...

Global site tag (gtag.js) - Google Analytics