- 浏览: 32448 次
- 性别:
- 来自: 天津
最新评论
第七 篇:使用 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));
发表评论
-
TWaver组件之Tree使用(翻译TWaver文档+补充自己使用体会)
2010-04-09 21:37 3097第一篇:使用一个 Tree 组件 TTree ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)九
2010-04-08 16:57 1250第九篇:从表格获取 Element 数据 在 ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)八
2010-04-08 16:51 1900第八篇 使用 Element Table ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)六
2010-04-08 16:29 1315第六篇 TTable 的 高级使用 ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)五
2010-04-07 17:01 1196第五 篇:使用内置的列 TWaver 表格提供了两 ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)四
2010-04-07 16:49 1263第四篇 使用 TableModel ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)三
2010-04-07 16:41 2156第三 篇:使用表格列 一般情 况下使用一个空的表 ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)二
2010-04-07 16:28 1331第二 篇: 创建表格组件 作为一个扩 展自 Sw ... -
TWaver组件之Table使用(翻译TWaver文档+补充自己使用体会)一
2010-04-07 16:13 1286ResizableTable 这事一 个可以改 ... -
java性能
2009-12-18 17:11 761性能 “本附录由Joe Sharp投稿,并获得他的同意在这儿 ... -
java C/S客户端实现数据库连接池
2009-11-23 23:49 2151import java.sql.Connection; imp ... -
java Swing进度条体现打开一个界面的进度
2009-11-19 17:11 8405网上提到进度条,总是提到多线程,然后把多线程加到程序里面,更有 ... -
软件优化中的一个小问题
2009-11-12 13:18 751在软件优化中,为了保证相同的数据只从数据库或者本地xml文件读 ...
相关推荐
TWaver组件是针对Flex和Flash平台的专业图形化组件,由Adobe公司的Flex/Flash技术构建。它为电信行业的运营支撑系统提供了一种富互联网应用(RIA)解决方案,同时也适用于电力、金融、制造、交通等多个领域的软件...
【标签】"twaver java 4.1 整合包" 表明这是一个包含Twaver 4.1所有必要组件的完整集合,包括Java库、相关的文档和API参考,是进行Java项目开发的必备资料。 【压缩包子文件的文件名称列表】: 1. **demo.bat** 和 ...
通过这个"TWaver的3d图形组件库,小demo",开发者不仅可以学习到如何使用TWaver库创建3D图形,还能了解到现代Web开发中的3D数据可视化技术和最佳实践。通过研究提供的源代码,开发者可以提升自己在WebGL和JavaScript...
文档中也明确了版权信息和版权声明,强调了文档是ServaSoftware的专有信息,使用文档需遵循与ServaSoftware之间签订的许可协议。同时指出文档中提及的所有商标和品牌均属于其各自的所有者。 ### 注意事项 文档强调...
“twaver.js使用示例”这一标题表明了我们即将探讨的是一个关于twaver.js的实践应用案例。Twaver.js是一款强大的图形化建模和可视化库,主要用于创建复杂的网络拓扑图、流程图、组织结构图等。这个标题暗示我们将...
使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的各种基本元素,如节点(Node)、连线(Link)等; 容器:图元都统一放置在一个容器(DataBox)中进行管理...
- **界面交互**也是TWaver的重要组成部分之一,它提供了丰富的API来处理用户的输入事件,并且可以根据用户的操作实时更新视图。 ### 产品家族与技术栈 - TWaver支持多种技术和平台,包括**Java**、**Flex**、**...
Twaver java开发帮助文档,英文版的。
该文档详细介绍了 Twaver Web SVG 的架构、开发流程以及常见问题解决方案等内容,旨在帮助开发者更好地理解和掌握 Twaver Web SVG 的使用方法。 #### 二、简介 ##### 2.1 TWAVER WEBSVG 结构 Twaver Web SVG 采用...
TWAVER是一款强大的JAVA图形设计组件,专为电信...综合这些资源,开发者不仅可以了解TWAVER的基本功能,还能通过示例代码和文档深入理解如何在自己的项目中集成和扩展TWAVER组件,以构建出高效且用户友好的图形界面。
【描述】"TWaver-Java手册,单机Demo 相应的文档和接口"涵盖了该组件的使用指南、示例代码以及详细的API接口文档。手册部分将引导用户了解如何集成和操作TWaver组件,而Demo则提供了实际运行的示例,帮助开发者快速...
刚弄到的最新版本TWaver3.1的Demo源代码(包含了DEMO运行程序,相关文档,API接口,源码,网站上没有的)...它不但提供了全部的Demo,还有相应的全部文档和源码,有了它,您完全可以根据自己的需要做出漂亮的电信组件。
在视图组件部分,文档将介绍Network、Tree和Table三种主要组件的介绍,这些组件是构建可视化界面的核心。Network组件用于展示网络拓扑结构,Tree组件用于构建树形结构,而Table组件用于展示和操作表格数据。 数据...
【标题】"TWaver 官方文档"指出的是TWaver这一技术的相关官方资料,它代表了一个专注于数据可视化和图表绘制的工具。TWaver是用于创建交互式图表、网络图、流程图、地图等复杂可视化应用的JavaScript库。通过官方...
《TWaver .NET 开发指南+API(英文版)》是专为.NET开发者设计的一份重要参考资料,旨在帮助开发者深入理解和高效使用TWaver组件。TWaver是一个强大的数据可视化工具,尤其适用于创建复杂的图表、网络图以及地理信息...
标题中的"twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_"似乎是指一个基于HTML5的Twaver版本5.9.0的应用程序接口(API)文档。Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织...
【TWaver-Java 电信组件】是专门为电信行业设计的一款强大的可视化组件库,它提供了丰富的图形化工具,用于构建复杂的网络拓扑、设备状态监控、业务流程展示等应用。这个单机Demo是开发者和系统集成商了解和评估...
8. documents:文档目录,可能包含TWaver的用户手册、API参考等资料,帮助开发者更深入地了解和使用TWaver。 9. javadoc:Java文档目录,通常生成自源代码,提供了TWaver库的API详细说明,包括方法、类和接口的描述...