TWaver学习之TTable篇

一、TWaver table组件介绍

TWaver table组件继承了Swing中的JTable,并对JTable中的排序、分页和过滤等功能做了加强。TWaver Table Class 结构如下:

 

ResizableTable:

这是一个可以放缩的表。

TTable:

这类表支持排序,分页,数据过滤,他是TWaver tablesTAlarm TableTElement TableTTree Table)的父类。

TElementTable:

这是最经常使用的TWaver表组件,它和DataBox一起使用并能显示每一行中的元素,它支持XML文档。这个类是开发者最推崇的一个类。

TTreeTable

这个类是TTreeTTable相结合的一个类。实现效果如下图:

 

二、TWaver table 的使用

         1TWaver table组件的构造器:

                   TTable()   默认的构造器,构造一张空表

                   TTable(String tableName)   构造一张定义为TWaver.XML配置名称的表

         2、表的基本操作方法

                   TTable table = newTTable();

                   TTableModel model = tableGetTableModel(); //获取表的选择模型

 

                   model.addRow(new Vector());   //增加一行

                   model.insertRow(int index, new Vector());   //插入一行

                   model.removeRow(int index);   //删除一行

                   model.clearPublishedData(); //删除所有公共的数据

                   model.clearRawData() ;   //删除所有的行数据

                   model.getPublishedData();   //获取所有公共数据,包括不可见的列

                   model.getCurrentPageData();  //获取当前页中的公共数据,包括不可见的列

         3、隐藏表中的列

                   第一种方法:

                   TTable table = new TTable();

                   Table.addColumn(new TTableColumn(“列名”));

Table.getColumnByName(“列名”).setVisible(false);

第二种方法:

Table.setColumnVisibleFilter(new ColumnVisibleFilter(){

         Public boolean isVisible(TTableColumn column){

                   Return !”列名”.equals(column.getName());

         }

})

         4、锁定表

                   锁定时,发布的数据将被保留,不管你往表中插入新数据。如果出于解锁时,这行         中的数据将被重新发布

                   TTableModel model = table.getTableModel();

                   //加锁

                   model.lock();

                   //解锁

                   Model.unlock();

         5右击选择所有行

                   *激活右击选择事件的方法:

                   TTable.setSelectableOnRightClick(true)

                   *交替更换行颜色:

 

            *隐藏表格线:

                   //隐藏垂直线

                   table.setShowVerticalLines(false);

                   //隐藏水平线

                   Table.setShowHorizontalLines(false);

         6表格行列的调整:

                   调整行高:

                   table.setRowResizable(true);

 

                   调整列宽:

                   table.setColumnResizable(true);

 

  列宽自动调整:

依据表格的宽度和标题的宽度调整列宽为首选宽度.

Table.packAllColumns(true);  //调整所有列的宽度

Table.packColumns(table.getTableModel().getColumnByName(“age”),true);//调整选定

的一列宽度。

         7设置表格单元格可编辑

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

                   例子如下:

                  

         8表格渲染

Twaver提供了很多预定义的渲染器供使用,渲染器所在的包“twaver.table.renderer.

          使用如下:

      

         9、表格排序

TWaver表中的数据可以按列排序,排序方式有递增、递减和无。单击列头可以选择排序模式,按住Ctrl并且选择需要排序的列,能实现多列排序。

l  使用table.setSortable(false)去取消表排序。默认情况下是开启排序的。

l  使用TTableColumn.setSortComparator(java.util.Comparator)自定义排序。

l  设置一列无序table.getTableModel().getColumnByName(“age”).setSortable(false);

 

10、表格分页

         分页原理:启动分页时,所有原始数据模型将被保存在一个原始数据集中。同样,表模型将计算并保存当前数据到另一个公布数据集合中。只有公布数据才能显示在TWaver表组件中,这个过程称作“数据发布”。

         Twaver.table.TTableModel类实现了twaver.table.TablePaging接口。我们能从TablePaging接口中获取分页信息。分页信息中包括 每页大小(page size)、当前页码(current page index,总页数(total page)等。

结构图:

 

TTableModel model = table.getTableModel();

       //添加10列数据

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

           Vector row = new Vector();

           row.addElement(""+i);

           row.addElement("Description for index" + i);

           model.addRow(row);

       }

       //设置每页大小

       model.setPageRowSize(3);

       //设置当前页

       model.setCurrentPageIndex(2);

       //获取记录总数

    model.getPageTotalCount();

       添加分页的导航图

           //设定几个页数,0表示全部

       int[] init = new int[]{20,30,50,0};

    TTableNavigator navigator=new TTableNavigator(table.getTableModel(),init,true);

    10、操作表中的列

         增加列:

        

         删除列:

        

         清除所有列:

 

代码如下:

 

 

11、设置过滤器

过滤第三列颜色不为红色的数据,代码如下:

 

 

12、表的监听事件

         表的监听事件所在包“twaver.table.TTableListener,常用的事件有:

l  rowClicked

l  rowSelectionChanged

l  beforeCellValueChanged

l  tableUpdated

l  lockedChanged

l  tableDataChanged

 

三、元素表组件(Element Table Component)

         元素表来自TWaver  table,所以它继承了它的许多属性,比如:自定义列,排序,分页,锁,弹出菜单和过滤器等,元素表常用来显示TWaver element objects,元素表连接Databox并从DataBox中获取所有elements元素,并在预定义列中显示出来。

 

 

 

1.         从表中获取元素(Elements

l  按行的索引值获取元素

TElementTable.getElementByBoxIndex(int row)

l  按记录获取元素

TElementTable.getElementByRowData(Vector rowData)

l  获取published Element

Public List getPublishedElement()

l  获取当前页的元素

Public List getCurrentPageElements()

l  获取选定行中的元素

table.getDataBox().getSelectionModel().getAllSelectedElement();

 

2.         加载数据

将数据从顶端添加。

table.setConverseIncreaseOrder(true);

3.         设置行总在顶部SendToTop Filter 和总在底部SendToBottom Filter

Public void setSendToTopFilter(SendToTopFilter sendtoFilter)

Public void setSendToBottomFilter(SendToBottomFilter sendToBottomFilter)

4.         设置元素是否可见Visible Filter

List   getVisibleFilters()

Void  addVisibleFilter(VisibleFilter visibleFilter)

Void  removeVisibleFilter(VisibleFilter visibleFilter)

 

 

五、         使用树表组件TreeTable Component

 

1.         树表TreeTable是树和表的组合,

实例:table.xml

<beaninfo>

      <attribute

         name="name"

         displayName="Name"/>

      <attribute

         clientPropertyKey="age"

         displayName="Age"/>

</beaninfo>

 

定义元素类:Person.java

public class Person extends Node{

 

         public Person(String name,int age){

            this.setName(name);

            this.putClientProperty("age", age);

         }

         public int getAge(){

            String value= this.getClientProperty("age").toString();

            return Integer.valueOf(value).intValue();

         }

}

TreeTable.java

//定义TTreeTable

               private TDataBox box = new TDataBox("TTable Example!");

    TTreeTable table = new TTreeTable(box);

 

//设置行高

           table.setRowHeight(18);

           //注册元素

table.registerElementClassXML(Person.class, "/com/twaver/table/table.xml");

          

### 回答1: TWaver是一款Java图形库,可以用于开发网络拓扑图和数据可视化应用。如果你想要实现雷达扫描效果,可以通过TWaver提供的动画效果来实现。 首先,你需要创建一个自定义的元素,并且在该元素上添加一个动画效果。代码示例如下: ``` public class RadarElement extends BasicShapeNode { private float angle = 0; public RadarElement() { setWidth(50); setHeight(50); setBorderColor(Color.RED); setBorderWidth(2); setFillColor(new Color(0, 0, 0, 0)); setAnchorPoint(0.5, 0.5); setShapeType(ShapeType.ROUND_RECTANGLE); // 添加动画效果 addAnimation(new Animation() { @Override protected void apply(long time) { angle += 2; if (angle > 360) { angle = 0; } setRotation(angle); } }); } } ``` 在该元素,我们实现了一个旋转的动画效果,并且将该元素的形状设置为圆角矩形。接下来,我们需要将该元素添加到TWaver的拓扑图上,并且设置该元素的位置。 ``` RadarElement radar = new RadarElement(); radar.setLocation(100, 100); topoBox.addElement(radar); ``` 最后,我们需要实现一个定时器,用于触发动画效果。代码示例如下: ``` Timer timer = new Timer(50, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { topoBox.repaint(); } }); timer.start(); ``` 在定时器的回调函数,我们只需要调用拓扑图的repaint方法,就可以触发动画效果了。运行程序后,你将会看到一个旋转的圆角矩形,就像雷达扫描一样。 ### 回答2: TWaver动画之雷达扫描效果是一种常见的视觉效果,主要用于展现雷达扫描的过程。该效果通常通过在一个圆形区域内旋转的线条或光束来模拟雷达扫描的动态效果。 该效果的实现通常包括以下几个步骤: 首先,在界面上创建一个圆形区域,这个圆形区域通常表示雷达扫描的范围。可以设置圆形区域的颜色和边框样式,以便与界面整体风格协调。 其次,在这个圆形区域内创建一个线条或光束,用于模拟雷达扫描的效果。可以设置线条或光束的起始位置、方向、颜色等属性。可以通过旋转或平移线条或光束,使其模拟雷达扫描过程的动态效果。 然后,可以通过设置定时器或动画效果,在一定的时间间隔内不断地更新线条或光束的位置或角度,从而实现雷达扫描效果的连续动画播放。 最后,可以根据实际需求,对动画效果进行调整和优化。可以设置动画的速度、循环次数等参数,以及添加适当的缓动效果,使动画更加流畅和自然。 总的来说,TWaver动画之雷达扫描效果是一种通过线条或光束的旋转或平移来模拟雷达扫描过程的动态效果。该效果可以直观地展现雷达扫描的范围和方向,为用户提供更好的交互体验。 ### 回答3: TWaver动画库是一个强大的前端动画库,提供了许多种各样的动画效果,包括雷达扫描效果。 雷达扫描效果是一种常见的动画效果,常用于展示扫描范围或者探测周围的目标。具体实现雷达扫描效果的步骤如下: 首先,我们需要一个圆形的容器,作为雷达扫描的范围。可以使用TWaver动画库提供的画布组件来实现。 接下来,我们需要定义一个扫描线,用于模拟雷达扫描。可以使用TWaver动画库提供的线条组件,并设置其起点和终点,使其呈现从圆心向外扩散的效果。 然后,通过设置扫描线的长度、颜色和透明度等属性,可以调整雷达扫描的效果。 最后,我们可以使用TWaver动画库提供的定时器功能,不断改变扫描线的起点和终点,以达到连续扫描的效果。可以通过计算扫描线的角度和半径,并使用三角函数来实现扫描线的动态变化。 总结来说,使用TWaver动画库实现雷达扫描效果的步骤包括创建圆形容器、定义扫描线、设置扫描线的属性和动态变化,并使用定时器来实现连续扫描的效果。通过灵活调整属性和动画参数,可以实现不同类型的雷达扫描效果,为用户提供更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值