超級強大的DataGrid組件
0
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)。
當 DataGrid 實例從單擊或 Tab 鍵切換中獲得焦點時,您可以使用以下按鍵來控制它:
鍵 | 說明 |
---|---|
向下箭頭 | 如果正在編輯單元格,插入點將移到單元格文本的末尾。如果單元格不可編輯,則向下箭頭處理選區的方式與 List 組件相同。 |
向上箭頭 | 如果正在編輯單元格,插入點將移到單元格文本的開頭。如果單元格不可編輯,則向上箭頭處理選區的方式與 List 組件相同。 |
向右箭頭 | 如果正在編輯單元格,插入點將向右移動一個字符。如果單元格不可編輯,內容向左移動一水平滾動行。 |
向左箭頭 | 如果正在編輯單元格,插入點將向左移動一個字符。如果單元格不可編輯,內容向右移動一水平滾動行。 |
Enter | 如果正在編輯單元格,則會提交更改,并且插入點將移到同一列中單元格的下一行。 |
Shift+Enter | 如果正在編輯單元格,則會提交更改,并且插入點將移到同一列中單元格的上一行。 |
Tab | 如果下一個單元格可編輯,將焦點移動到下一個單元格,并選中該單元格的所有文本;否則,將焦點移到下一個對象。 |
Shift+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});