超級強大的DataGrid組件

Eugene 12年前發布 | 789 次閱讀 搜索技術

DataGrid 組件允許用戶顯示和操作多列數據。
當 DataGrid 實例從單擊或 Tab 鍵切換中獲得焦點時,您可以使用以下按鍵來控制它:


以下示例演示數據網格的屬性。

從"庫"面板中拖動相關組件到舞臺(或直接通過 ActionScript 代碼創建組件實例),并對實例命名。

在主時間軸中選擇第一幀,打開"動作"面板,然后輸入以下代碼:

my_dg.setColumnNames(["id","name","score"]);
my_dg.addItem({id:0,name:"Clark",score:3135});
my_dg.addItem({id:1,name:"Bruce",score:403});
my_dg.addItem({id:2,name:"Peter",score:25}); 

通過設置 CellRenderer 創建類似 List 的 DataGrid。

首先,創建數據網格的行渲染器 DataGridRowRenderer 類(繼承于 ListCellRenderer)。

package {
    import flash.text.TextField;
    import shinater.swing.DataGrid;
    public class DataGridRowRenderer extends ListCellRenderer {
        public override function setSize(width:Number, height:Number):void {
            _width = width;
            _height = height;
            repaint();
        }
        public override function repaint():void {
            var dataGrid:DataGrid = DataGrid(getOwner());
            var x:Number = textField.x;
            for (var i:int = 0,columnCount:uint = dataGrid.getColumnCount(); i<columnCount; i++) {
                var txt:TextField;
                if (i == 0) {
                    txt = textField;
                } else {
                    var n:String = "textField" + i;
                    txt = getChildByName(n) as TextField;
                    if (txt == null) {
                        txt = new TextField();
                        txt.name = n;
                        addChild(txt);
                    }
                    txt.defaultTextFormat = textField.defaultTextFormat;
                    txt.x = x;
                    txt.y = textField.y;
                    txt.height = textField.height;
                }
                txt.text = getData()[dataGrid.getColumnName(i)];
                txt.width = dataGrid.getColumnWidth(i);
                x += txt.width;
            }
            skin.width = _width;
            skin.height = _height;
            if (focusRectSkin != null) {
                focusRectSkin.width = _width;
                focusRectSkin.height = _height;
            }
        }
    }
}

同上例,在主時間軸中選擇第一幀,打開"動作"面板,然后輸入以下代碼:

my_dg.setCellRenderer(DataGridRowRenderer);
my_dg.setColumnNames(["id","name","score"]);
my_dg.addItem({id:0,name:"Clark",score:3135});
my_dg.addItem({id:1,name:"Bruce",score:403});
my_dg.addItem({id:2,name:"Peter",score:25});

參考資料來源于:http://www.shinater.com/FlashSwing/Help/DataGrid.html

 本文由用戶 Eugene 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!