自定义一个渲染单元格的类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;
}
}
}