- 浏览: 580578 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
这个是基于AsWing组件库实现的
主要是对JTable和PropertyTableModel进行组合封装,方便使用
可以设置表格数据,列头,属性,转换器,还可以渲染单元格,在特定列中加入其它组件
package mytest.table { import org.aswing.BorderLayout; import org.aswing.JPanel; import org.aswing.JTable; import org.aswing.ListModel; import org.aswing.border.TitledBorder; import org.aswing.event.ClickCountEvent; import org.aswing.geom.IntDimension; import org.aswing.table.GeneralTableCellFactory; import org.aswing.table.PropertyTableModel; public class XPropertyTable extends JPanel { /** 数据模刑 */ private var _listModel:ListModel; /** 列名数组 */ private var _names:Array; /** 属性数组 */ private var _properties:Array; /** 单元格转换数组 */ private var _translators:Array; private var _table:JTable; private var _tableModel:PropertyTableModel; /** 双击表格处理函数 */ private var _doubleClickFunction:Function; private var _titledBorder:TitledBorder; private var _scrollPane:JScrollPane; public function XPropertyTable($listModel:ListModel, $names:Array, $properties:Array, $translators:Array, $doubleClickFunction:Function = null) { this._listModel = $listModel; this._names = $names; this._properties = $properties; this._translators = $translators; this._doubleClickFunction = $doubleClickFunction; _tableModel = new PropertyTableModel(_listModel, _names, _properties, _translators); /** 默认为不可编辑 */ _tableModel.setAllCellEditable(false); _table = new JTable(_tableModel); if($doubleClickFunction != null){ _table.addEventListener(ClickCountEvent.CLICK_COUNT, _doubleClickFunction); } _scrollPane = new JScrollPane(_table); this.setLayout(new BorderLayout()); this.append(_scrollPane, BorderLayout.CENTER); } /** 渲染列 */ public function setRenderTableCell($column:int, $cellClass:Class):void{ _table.getColumnAt($column).setCellFactory(new GeneralTableCellFactory($cellClass)); } /** 设置数据 */ public function setList($listModel:ListModel):void{ _tableModel.setList($listModel); } /** 是否可编辑 */ public function setAllCellEditable($value:Boolean = false):void{ _tableModel.setAllCellEditable($value); } /** 设置表格宽高 */ public function setTableSize($width:int, $height:int):void{ this.setPreferredSize(new IntDimension($width, $height)); } /** 设置行高 */ public function setRowHeight($value:int):void{ _table.setRowHeight($value); } /** 设置列的最大最小宽度 (可隐藏列) * * 设置它相对于默认值75 的大小,各列不同的期望宽度形成一个比例关系, * JTable 根据这个比例关系来分配初始化时各列的宽度 * * 功能说明 * 1)设置列宽度$maxWidth至$minWidth * 只能在$maxWidth至$minWidth 范围内手动调整宽度 * 如果$maxWidth=$minWidth则不能手动调整调整宽度 * * 2)隐藏列 * 当$maxWidth和$minWidth都为0时可隐藏列 * */ public function setColumnWidth($column:int, $maxWidth:int, $minWidth:int):void{ _table.getTableHeader().getColumnModel().getColumn($column).setMaxWidth($maxWidth); _table.getTableHeader().getColumnModel().getColumn($column).setMinWidth($minWidth); _table.getColumnAt($column).setMaxWidth($maxWidth); _table.getColumnAt($column).setMinWidth($minWidth); } /** 设置单元格值 */ public function setValueAt($value:Object, $row:int, $column:int):void{ _table.setValueAt($value, $row, $column); } public function setTitle($value:String):void{ _titledBorder = new TitledBorder(null, $value); this.setBorder(_titledBorder); } /** 取表格 */ public function getTable():JTable{ return _table; } /** 到表格数据模型 */ public function getTableModel():PropertyTableModel{ return _tableModel; } /** 取总行数 */ public function getRowCount():int{ return _table.getRowCount(); } /** 取总列数 */ public function getColumnCount():int{ return _table.getColumnCount(); } /** 取单元格值 */ public function getValueAt($row:int, $column:int):Object{ return _table.getValueAt($row, $column); } } }
使用
package { import flash.display.Sprite; import mytest.table.XPropertyTable; import org.aswing.AsWingManager; import org.aswing.BorderLayout; import org.aswing.JFrame; import org.aswing.JLabel; import org.aswing.JOptionPane; import org.aswing.JPanel; import org.aswing.VectorListModel; import org.aswing.event.ClickCountEvent; public class MyTest extends Sprite { private var frm:JFrame; private var mainPanel:JPanel; private var centerPanel:JPanel; private var btnPanel:JPanel; public function MyTest() { AsWingManager.initAsStandard(this); frm = new JFrame(null, "table"); frm.setSizeWH(500, 500); mainPanel = new JPanel(new BorderLayout()); var data:Array = [{name:"iiley", sex:1, age:26}, {name:"Comeny", sex:0, age:24}, {name:"Tom", sex:1, age:30}, {name:"Lita", sex:0, age:16} ]; var dataList:VectorListModel = new VectorListModel(); dataList.appendAll(data); var xpt:XPropertyTable = new XPropertyTable(dataList, ["Guy's Name", "Sex", "Age", "Oper"], ["name", "sex", "age", "."], [null, new SexTranslator(), null, null], __onDoubleClick ); xpt.setTitle("表格一"); /** 设置表格宽高 */ xpt.setTableSize(400, 400); /** 设置是否可编辑 */ xpt.setAllCellEditable(false); /** 设置行高 */ xpt.setRowHeight(30); /** 设置列宽 */ xpt.setColumnWidth(2, 50, 0); /** 渲染列 */ xpt.setRenderTableCell(3, OperateCell); mainPanel.append(new JLabel("NORTH"), BorderLayout.NORTH); var tablePanel:JPanel = new JPanel(); tablePanel.append(xpt); mainPanel.append(tablePanel, BorderLayout.CENTER); mainPanel.append(new JLabel("SOUTH"), BorderLayout.SOUTH); frm.getContentPane().setLayout(new BorderLayout()); frm.getContentPane().append(mainPanel, BorderLayout.CENTER); frm.show(); } /** 双击事件 */ private function __onDoubleClick(event:ClickCountEvent):void{ if(event.getCount() >= 2){ JOptionPane.showMessageDialog("提示", "谁双击了我!"); } } } } import org.aswing.BorderLayout; import org.aswing.Component; import org.aswing.FlowLayout; import org.aswing.JButton; import org.aswing.JPanel; import org.aswing.JTable; import org.aswing.table.PropertyTranslator; import org.aswing.table.TableCell; /** 单元格内容转换 */ class SexTranslator implements PropertyTranslator{ public function translate(info:*, key:String):*{ var sex:int = info[key] as int; if(sex == 0) return "男"; else return "女"; } } /** 渲染列 */ class OperateCell extends JPanel implements TableCell { private var _btnPanel:JPanel; private var _editBtn:JButton; protected var _value:*; private var _table:JTable; private var _selectRow:int; public function OperateCell() { initUI(); } private function initUI():void{ _btnPanel = new JPanel(new FlowLayout(2,5,1)); _editBtn = new JButton("编辑"); _btnPanel.appendAll(_editBtn); this.setLayout(new BorderLayout()); this.append(_btnPanel, BorderLayout.CENTER); } public function setCellValue($value:*):void{ } public function getCellValue():*{ return _value; } public function setTableCellStatus(table:JTable, isSelected:Boolean, row:int, column:int):void{ } public function getCellComponent() : Component { return this; } }
发表评论
-
AS3 条件编译
2013-06-07 09:38 1308转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2300TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2128ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1391通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1502/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1819将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1799AS类中跳转 navigate ... -
Flash与Javascript交互时可用ExternalInterface类
2010-06-29 10:17 3648Flash与Javascript交互时可用ExternalIn ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1430转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1367Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2493navigateToURL() public fun ... -
ActionScript中Http请求
2010-06-19 09:42 3074ActionScript中Http请求 因我是用MVC模式来 ... -
ActionScript字符串工具
2010-06-04 09:44 3263ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1359加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1749AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2007最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1357如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1270这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 2993要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1913当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ...
相关推荐
微信小程序自定义组件例子,自定义弹窗例子,对初学者很有帮助
这是我用C#写的自定义组件和控件,内附一个testForm来演示如何使用。 其中,自定义的组件有:速选组件、窗口靠边停靠组件、窗口抖动组件。 自定义控件有:黑白的菜单栏、带进度显示的进度条等。
资源为Winform用户自定义组件库,是自己平时做项目用到的组件以及参考晚上那些有特效组件封装的组件库,中间付出了很多努力,攻克了很多难点,大家喜欢的话,请大家多多给予鼓励,目前是V1.0版本,后期不断更新。...
android 自定义组件android 自定义组件android 自定义组件android 自定义组件android 自定义组件android 自定义组件
ESP32S2基于VScode环境配置esp-idf插件添加自定义组件例程
android自定义组件demo实例,里面有三种自定义组件,可以学习
易语言自定义组件边框样式例程源码,自定义组件边框样式例程,SetWindowLongA,GetWindowLong
使用QtQuick做开发,会大量使用自定义的组件,但自定义组件如何在QtCreate的designer的库面板中显示并使用?本人查阅了大量资料,并摸索后将实现过程详细记录,通过一个小工程来做一示范
2008C#中的自定义组件2008C#中的自定义组件
这是开发当中经常使用的机制:android 绘图、自定义组件。可以自定义很酷炫的效果。
Vue3自定义组件库,Vue3项目
Flex4自定义组件 介绍了flex中如何自定义组件以及相关应用
ESP-IDF构建自定义组件模板,ESP32
Android自定义组件开发详解
android自定义组件简单Demo
基于canvas 2D(高性能)实现微信小程序自定义组件-环形进度条 可定义大小,颜色,渐变等,也可自行扩展更多属性
Android自定义组件开发详解,让你彻底理解自定义组件(自定义View、ViewGroup等,彻底了解canvas和paint的基本和高级使用方法)
Android APIdemo中关于自定义组件的讲解,自己学习一下
两份文档 1.WinForm控件开发总结.doc 2.为自定义组件添加工具箱图标.doc 两个自定义组件的源码 1.TLogWriter:日志文件记录类 2.TAppPath:取应用程序的执行路径
一些自定义组件用法指南,有兴趣的可以看看,绝对物超所值