?? sdagrid.java
字號:
package cn.sda.ui;import cn.sda.enterprise.*;import cn.sda.event.DrawGridCellEvent;import cn.sda.event.GridCellClickEvent;import cn.sda.event.KeybordEvent;import cn.sda.event.PointerEvent;import javax.microedition.lcdui.Graphics;import java.util.Vector;/** * @author not attributable * @version 1.0 */public class SDAGrid extends SDABaseControl { //數據集合 private SDADataSet DataSet = null; private SDADataSet oldDataSet = null; //各列寬度 private Vector ColumnsList; //邊框 private int borderStyle = SDAConsts.bsNone; //隱藏選定內容 private boolean hideSelection = true; //滾動邊框(多行) private int scrollBars = SDAConsts.srNone; //邊框線顏色 private int borderColor = SDAConsts.clBlack; //滾動條顏色 private int FixedColor = SDAConsts.clBtnFace; //選中后字體顏色 private int selectedFontColor = SDAConsts.clWhite; //選中行后,行的背景色 private int selectedBackColor = SDAConsts.clFocusShadow; private int lostFocusSelectedBackColor = SDAConsts.clGray; //統計行背景色 private int footRowColor = SDAConsts.clWhite; //內部變量 //左邊指針顯示的寬度 private int FixedWidth = 15; //表格頭的高度,行高 private int RowHeight = 15; //屏幕當前顯示起始行 private int StartRow = 0; //屏幕當前顯示起始列 private int StartCol = 0; //屏幕當前結束行 private int EndRow = 0; //是否為最后一行 private boolean IsEndRow = false; //是否為最后一列 private boolean IsEndCol = false; //當前指針位置 private int Cursor = 0; //滾動條寬度 private int barwidth = 10; //缺省列寬 private int DefaultColWidth = 50; //行數,行最大長度 private int maxLineLenght = 0; //水平開始顯示位置 private int startLeft = 0; //變動前位置 private int oldStartLine = 0; private int oldStartLeft = 0; //水平滾條位置 private int HSLeft = 0; private int HSTop = 0; private int HSWidth = 0; private int HSHeight = 0; //垂直滾動條位置 private int VSLeft = 0; private int VSTop = 0; private int VSWidth = 0; private int VSHeight = 0; //點擊的滾動條的位置 private int oldScrollPointx = 0; private int oldScrollPointy = 0; //按下滾動條 private boolean isscrollbarpointdown = false; //記錄按下的滾動條0:水平,1:垂直的 private byte scrollbardownHV = 0; //統計內容顯示 private boolean showFootRow = false; //點的排序字段 private String sortFieldName = ""; //排序方式 private int sortType = SDADataSet.sortAsc; //單元格單擊事件 private GridCellClickEvent OnGridCellClick = null; //繪單元格 private DrawGridCellEvent onDrawGridCell = null; //單元格 private Cell cell = null; //各列信息 public class Column { //統計類型 public static final int ftNone = 0; //不顯示 public static final int ftAvg = 1; //平均 public static final int ftCount = 2; //行數 public static final int ftStaticText = 3; //固定文字 public static final int ftSum = 4; //求和 public static final int ftFieldValue = 5; //當前值 //標題文字對齊方式 private int titleAlignType = SDAConsts.alignLeft; //內容文字對齊方式 private int dataAlignType = SDAConsts.alignLeft; //統計內容對齊方式 private int footAlignType = SDAConsts.alignLeft; //統計內容格式 private String footDisplayFormat = ""; //字段標題 private String Title = ""; //字段名 private String FieldName = ""; //列寬度 private int ColWidth = 60; //格式表達式(主要針對浮點數) private String DisplayFormat = ""; //統計內容 private String footValue = ""; //統計類型 private int footType = ftNone; //構造 public Column() { } public Column(String fieldName) { this.FieldName = fieldName; } public Column(String fieldName, String title) { this.FieldName = fieldName; this.Title = title; } public Column(String fieldName, String title, int colWidth) { this.FieldName = fieldName; this.Title = title; this.ColWidth = colWidth; } public Column(String fieldName, String title, int colWidth, String displayFormat) { this.FieldName = fieldName; this.Title = title; this.ColWidth = colWidth; this.DisplayFormat = displayFormat; } public int getColWidth() { return ColWidth; } public void setColWidth(int ColWidth) { this.ColWidth = ColWidth; } public String getDisplayFormat() { return DisplayFormat; } public void setDisplayFormat(String DisplayFormat) { this.DisplayFormat = DisplayFormat; } public String getFieldName() { return FieldName; } public void setFieldName(String FieldName) { this.FieldName = FieldName; } public String getTitle() { return Title; } public void setTitle(String Title) { this.Title = Title; } public int getFootType() { return footType; } public void setFootType(int footType) { this.footType = footType; } public String getFootValue() { return footValue; } public void setFootValue(String footValue) { this.footValue = footValue; } public int getDataAlignType() { return dataAlignType; } public void setDataAlignType(int dataAlignType) { this.dataAlignType = dataAlignType; } public int getTitleAlignType() { return titleAlignType; } public void setTitleAlignType(int titleAlignType) { this.titleAlignType = titleAlignType; } public int getFootAlignType() { return footAlignType; } public void setFootAlignType(int footAlignType) { this.footAlignType = footAlignType; } public String getFootDisplayFormat() { return footDisplayFormat; } public void setFootDisplayFormat(String footDisplayFormat) { this.footDisplayFormat = footDisplayFormat; } } //對列的處理 //增加 private void internalAddColumn(Column newColumn) { if (!ColumnsList.contains(newColumn)) { ColumnsList.addElement(newColumn); } } public void addColumn(Column newColumn) { internalAddColumn(newColumn); } private Column internalAddColumn() { Column cl = new Column(); ColumnsList.addElement(cl); return cl; } public Column addColumn() { return internalAddColumn(); } //構造 public Column newColumn() { return new Column(); } public Column newColumn(String fieldName) { return new Column(fieldName); } public Column newColumn(String fieldName, String title) { return new Column(fieldName, title); } public Column newColumn(String fieldName, String title, int colWidth) { return new Column(fieldName, title, colWidth); } public Column newColumn(String fieldName, String title, int colWidth, String displayFormat) { return new Column(fieldName, title, colWidth, displayFormat); } //刪除 private void internalDeleteColumn(int columnIndex) { if ((columnIndex > -1) && (columnIndex < ColumnsList.size())) { ColumnsList.removeElementAt(columnIndex); } } public void deleteColumn(int columnIndex) { internalDeleteColumn(columnIndex); } private void internalDeleteColumn(String columnFieldName) { Column cl = null; for (int i = 0; i < ColumnsList.size(); i++) { cl = (Column) ColumnsList.elementAt(i); if (cl.FieldName.equals(columnFieldName)) { ColumnsList.removeElementAt(i); break; } } } public void deleteColumn(String columnFieldName) { internalDeleteColumn(columnFieldName); } //獲取 public int getColumnsCount() { return ColumnsList.size(); } private Column internalGetColumn(int columnIndex) { Column result = null; if ((columnIndex > -1) && (columnIndex < ColumnsList.size())) { result = (Column) ColumnsList.elementAt(columnIndex); } return result; } public Column getColumn(int columnIndex) { return internalGetColumn(columnIndex); } private Column internalGetColumn(String columnFieldName) { Column cl = null; for (int i = 0; i < ColumnsList.size(); i++) { cl = (Column) ColumnsList.elementAt(i); if (cl.FieldName.equals(columnFieldName)) { break; } } return cl; } public Column getColumn(String columnFieldName) { return internalGetColumn(columnFieldName); } //單元格 public class Cell { private int foreColor = 0; private int backColor = 0; private String fieldValue = ""; private String fieldName = ""; private int rowIndex = 0; public int getBackColor() { return backColor; } public void setBackColor(int backColor) { this.backColor = backColor; } public int getForeColor() { return foreColor; } public void setForeColor(int foreColor) { this.foreColor = foreColor; } public String getFieldName() { return fieldName; } public String getFieldValue() { return fieldValue; } public void setFieldValue(String fieldValue) { this.fieldValue = fieldValue;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -