`

在Table单元格中自定义渲染类

 
阅读更多

 

自定义一个渲染单元格的类XGeneralTableCellFactory 实现接口TableCellFactory

package common.cell

{
 import org.aswing.table.TableCell;
 import org.aswing.table.TableCellFactory;

 /**
  *
  * @author haosheng.lin
  */
 public class XGeneralTableCellFactory implements TableCellFactory {
  private var _cellClass:Class;
  private var _controller:Object

  public function XGeneralTableCellFactory(cellClass:Class, $controller:Object) {
   _cellClass = cellClass;
   _controller = $controller;
  }

  public function createNewCell(isHeader:Boolean):TableCell {
   return new _cellClass(_controller);
  }

  public function toString():String {
   return "XGeneralTableCellFactory[cellClass:" + _cellClass + "]";
  }
 }
}

 

在table中使用

 

_dataTable.getColumnAt(0).setCellFactory(new XGeneralTableCellFactory(CheckBoxCell, _selectedShopItemCloth));

 

真正要渲染的类

package common.cell
{
	import org.aswing.Component;
	import org.aswing.JCheckBox;
	import org.aswing.JPanel;
	import org.aswing.JTable;
	import org.aswing.event.InteractiveEvent;
	import org.aswing.table.TableCell;
	import org.aswing.util.HashSet;

	public class CheckBoxCell extends JPanel implements TableCell
	{
		private var _chk:JCheckBox;
		
		protected var _value:*;
		private var _table:JTable;
		
		private var _selectedSet:HashSet;
		
		
		public function CheckBoxCell($selectedSet:HashSet)
		{
			
			super();
			
			_selectedSet = $selectedSet;
			
			_chk = new JCheckBox();
			
			trace("===chk==="+_chk);
			_chk.addEventListener(InteractiveEvent.SELECTION_CHANGED, __onSelectionChanged);
			this.append(_chk);
			
		}
		
		
		private function __onSelectionChanged(event:InteractiveEvent):void{
			trace(_chk.isSelected());	
			trace(_value);
			
			if(_chk.isSelected()){
				_selectedSet.add(_value);
			}else{
				if(_selectedSet.contains(_value)){
					_selectedSet.remove(_value);
				}
			}
			
			
			for(var i:int = 0; i<_selectedSet.toArray().length; i++){
				trace("===select id==="+_selectedSet.toArray()[i]);
			}
			
		}
		
		public function setCellValue($value:*):void{
			_value = $value;
		}
		
		
		public function getCellValue():*{
			return _value;
		}
		
		
		
		public function setTableCellStatus(table:JTable, isSelected:Boolean, row:int, column:int):void{
			
			this._table = table;
			
		}
		
		
		public function getCellComponent() : Component {
			return this;
		}
		
		
	
		
	}
}

 

 

分享到:
评论

相关推荐

    vue-easytable合并单元格

    Vue Easytable提供了自定义渲染(render)和数据处理(data processing)的方法来实现复杂的表格布局,包括单元格合并。 首先,理解Vue Easytable的基本使用。创建一个表格通常需要定义列(columns)和数据(data)...

    表格单元格自定义ToolTip组件

    "表格单元格自定义ToolTip组件"是一个专门解决UI交互问题的工具,它允许开发者根据需求为表格中的每个单元格提供更加详细和丰富的信息提示。这种自定义的ToolTip在Flex组件上特别有用,Flex是一种强大的富互联网应用...

    自定义表格,表头可合并单元格,自定义列数据

    在实际应用中,"CustomTable"可能是一个包含了上述功能的类或者模块,它封装了所有关于自定义表格的逻辑,使得开发者能够方便地在项目中使用。这可能包括了对表格的初始化、数据绑定、表头设置、单元格合并、列数据...

    layui table合并单元格.zip

    "layui table合并单元格.zip" 这个压缩包正是提供了关于如何在layui的表格中实现单元格合并的示例和资源。 首先,"layui table.txt" 文件可能包含了layui表格组件的基础用法和API介绍。layui的表格组件支持动态加载...

    vue用ant design中table表格,点击某行时触发的事件操作

    使用customRow 设置行属性,...在官方文档中也写的很清楚 补充知识:Ant-Design-Vue table 合并单元格,并且添加点击事件 点击行,有一个customRow。可以配置点击事件。 单元格的自定义分为两种方式。 一种是:通过tem

    LayUiTable表单相同参数的单元格合并

    本话题聚焦于LayUI中的Table组件,特别是如何实现相同参数的单元格合并功能,这在展示数据时能有效提高信息的可读性和美观性。 LayUI Table的单元格合并功能,主要是通过`parseData`方法和自定义模板来实现的。当...

    layui table中的列为checkbox 使layui中table表格中的列单元格显示为单选框checkbox

    在本文中,我们将深入探讨如何在layui框架中...在layui中,我们可以灵活地自定义表格的列,将单元格设置为复选框,实现用户友好的交互。 首先,我们需要引入layui的CSS和JS文件。在HTML头部添加以下代码: ```html ...

    js对Table排序经典

    在排序过程中,为了避免丢失单元格的样式,我们可以保存每个单元格的CSS属性,然后在重新渲染表格时恢复这些属性。 5. **自定义排序起点**: 用户可能希望从特定行开始排序,这可以通过增加额外参数或设置变量来...

    layui table单元格事件修改值的方法

    在这个例子中,我们使用了 `table.on('tool(jqGridFilter)', function (obj) {})` 来监听表格工具栏的事件,`tool(jqGridFilter)` 是表头过滤器的事件,因为没有具体的过滤器设置,这里我们用作通用的单元格事件监听...

    自定义GridTable(可以用来研究自定义控件的实现)

    3. **自定义渲染**:为了自定义GridTable的外观,你需要了解如何重写或扩展渲染机制。这可能包括改变单元格的背景色、字体样式、边框等。你可能需要使用HTML、CSS和JavaScript(对于Web应用)或Windows Presentation...

    vxe-table vue table 表格组件功能

    在基础功能方面,vxe-table可以实现常规的表格显示需求,如表格尺寸的自定义、斑马线样式、带有边框的展示以及单元格样式的调整等。通过这些基础设置,开发者可以根据实际需求定制表格的外观,以达到更好的视觉效果...

    用于在vxetable表格中适配antdesignvue组件的渲染

    3. **组件适配与渲染**:在VxeTable中适配Ant Design Vue组件,主要是通过VxeTable的自定义渲染(render)函数来实现的。这通常涉及到`h`函数的使用,`h`是Vue的渲染函数,允许开发者创建Vue组件实例。通过`h...

    vxe-table-v2.9.24_表格组件_Table_

    vxe-table通过只渲染可视区域的行,大大降低了内存占用和渲染时间,使表格在大量数据下仍能保持流畅的滚动体验。 3. **懒加载**:对于大型数据集,vxe-table支持懒加载策略,只在用户滚动到特定位置时才加载更多...

    swing 合并单元格的表格

    通过实现`javax.swing.table.TableCellRenderer`接口,我们可以自定义渲染逻辑,比如在特定条件下合并相邻的单元格。这个类可能会使用`setBounds()`和`paintComponent()`方法来绘制跨越多个单元格的大单元格。 `...

    struts1 自定义标签嵌套 table&&user

    在本案例中,我们讨论的是如何在Struts1中实现自定义标签的嵌套,特别是`table`和`user`这两个自定义标签的使用。 首先,我们需要理解自定义标签的工作原理。在Struts1中,自定义标签通常由两部分组成:标签库描述...

    VUE+elementui组件在table-cell单元格中绘制微型echarts图

    通过动态ID、`$nextTick`以及自定义方法,我们可以实现在每个单元格内展示个性化的微型图表,提供更加直观的数据分析视图。这种方法在数据驱动的Web应用中非常实用,可以帮助用户更好地理解复杂的数据信息。

    在table中添加jcombox

    虽然默认的`DefaultTableCellRenderer`可能能工作,但有时你可能需要自定义渲染器来更好地控制`JComboBox`在非编辑状态下的显示。创建一个`DefaultTableCellRenderer`的子类,并重写`getTableCellRendererComponent`...

    jquery.table.rowspan.js 表格自动合并单元格插件

    总之,`jquery.table.rowspan.js`插件为前端开发提供了便利,使得在表格中实现单元格自动合并变得更加简单。它适用于需要动态展示和更新数据的场景,且无需频繁地与服务器交互。通过理解和掌握这个插件,开发者能够...

    JTable合并单元格

    在Java Swing中,`JTable`是一个非常常用的组件,...通过自定义渲染器和模型,以及适当的事件处理,你可以实现符合需求的单元格合并效果。不过,这个过程可能涉及到大量的代码编写和调试,所以要有耐心和细心的态度。

    JSP自定义Table标签demo

    4. **在JSP页面中使用标签**:在JSP页面中,我们可以通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,并使用`&lt;myTableTag:table&gt;`这样的语法来调用自定义的表格标签。 在"JSP自定义Table标签demo"中,我们可能期望看到...

Global site tag (gtag.js) - Google Analytics