`

在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;
		}
		
		
	
		
	}
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics