📄 sdalistbox.java
字号:
package cn.sda.ui;import cn.sda.event.KeybordEvent;import cn.sda.event.PointerEvent;import javax.microedition.lcdui.Graphics;import java.util.Vector;import javax.microedition.lcdui.Image;/** * @author not attributable * @version 1.0 */public class SDAListBox extends SDABaseControl { //边框 private int borderStyle = SDAConsts.bsFixedSingle; //隐藏选定内容 private boolean hideSelection = true; //滚动边框(多行) private int scrollBars = SDAConsts.srVertical; private int barwidth = 10; //边框线颜色 private int borderColor = SDAConsts.clBlack; //滚动条颜色 private int scrollBarColor = SDAConsts.clBtnFace; //选中后字体颜色 private int selectedForeColor = SDAConsts.clWhite; private int selectedBackColor = SDAConsts.clFocusShadow; //内部变量 //行数,行最大长度 private int maxLineLenght = 0; private int maxLineNum = 0; //最大可见完整行数 private int maxVisibleLineNum = 0; //垂直开始显示行 private int startLine = 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 Vector itemList; //当前选择行 private int itemIndex = -1; //显示选择框 private boolean showCheckBox = false; //显示图 private boolean showItemImage = false; public SDAListBox() { super(); internalSDAListBox(); } private void internalSDAListBox() { itemList = new Vector(); this.setVisible(true); setLeft(0); setTop(0); setBorderStyle(SDAConsts.bsFixedSingle); super.setWidth(160); setHeight(100); super.setBackColor(SDAConsts.clWhite); this.onPointerPressed = new PointerEvent() { public void Event(SDABaseControl ctrl, int x, int y) { doPointerPressed(x, y); } }; this.onPointerReleased = new PointerEvent() { public void Event(SDABaseControl ctrl, int x, int y) { doPointerReleased(x, y); } }; this.onKeyUp = new KeybordEvent() { public void Event(SDABaseControl ctrl, int keyCode) { doKeyUp(keyCode); } }; } //增加项 public SDAListItem addItem(String itemString, Image image, boolean isChecked) { return internalAddItem(itemString, image, isChecked); } private SDAListItem internalAddItem(String itemString, Image image, boolean isChecked) { SDAListItem listitem = new SDAListItem(); listitem.setImage(image); listitem.setChecked(isChecked); listitem.setItemString(itemString); itemList.addElement(listitem); if (itemIndex == -1) { itemIndex = 0; } internalPaint(); return listitem; } //删除项 public void deleteItem(int itemIndex) { internalDeleteItem(itemIndex); } private void internalDeleteItem(int itemIndex) { if (itemList.size() > itemIndex) { itemList.removeElementAt(itemIndex); if (itemList.size() == 0) { itemIndex = -1; } internalPaint(); System.gc(); } } //清除所有项目 public void clear() { internalClear(); } private void internalClear() { itemList.removeAllElements(); itemIndex = -1; System.gc(); internalPaint(); } //获取项 public Image getItemImage(int itemIndex) { return internalGetItemImage(itemIndex); } private Image internalGetItemImage(int itemIndex) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); return listitem.getImage(); } else { return null; } } public String getItemString(int itemIndex) { return internalGetItemString(itemIndex); } private String internalGetItemString(int itemIndex) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); return listitem.getItemString(); } else { return null; } } //查找判断是否有指定内容的项 public boolean findItem(String itemValue) { return getItem(itemValue) == null ? false : true; } public SDAListItem getItem(String itemValue) { return internalGetItem(itemValue); } public SDAListItem getItem() { return (SDAListItem) itemList.elementAt(itemIndex); } public SDAListItem getItem(int Index) { return (SDAListItem) itemList.elementAt(Index); } private SDAListItem internalGetItem(String itemValue) { SDAListItem item = null; SDAListItem result = null; for (int i = 0; i < itemList.size(); i++) { item = (SDAListItem) itemList.elementAt(i); if (item.getItemString().equals(itemValue)) { result = item; break; } } return result; } public boolean getItemChecked(int itemIndex) { return internalGetItemChecked(itemIndex); } private boolean internalGetItemChecked(int itemIndex) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); return listitem.isChecked(); } else { return false; } } public int getItemCount() { return itemList.size(); } public boolean isShowCheckBox() { return showCheckBox; } public void setShowCheckBox(boolean showCheckBox) { this.showCheckBox = showCheckBox; internalPaint(); } public boolean isShowItemImage() { return showItemImage; } public void setShowItemImage(boolean showItemImage) { this.showItemImage = showItemImage; } public void setItemChecked(int itemIndex, boolean Checked) { internalSetItemChecked(itemIndex, Checked); } private void internalSetItemChecked(int itemIndex, boolean Checked) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); listitem.setChecked(Checked); internalPaint(); } } public void setItemImage(int itemIndex, Image image) { internalSetItemImage(itemIndex, image); } private void internalSetItemImage(int itemIndex, Image image) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); listitem.setImage(image); internalPaint(); } } public void setItemString(int itemIndex, String itemString) { internalSetItemString(itemIndex, itemString); } private void internalSetItemString(int itemIndex, String itemString) { if (itemList.size() > itemIndex) { SDAListItem listitem = (SDAListItem) itemList.elementAt(itemIndex); listitem.setItemString(itemString); internalPaint(); } } //画 public void paint() { internalPaint(); } private void internalPaint() { if (!IsCanPaint()) { return; } Graphics g = form.getGraphics(); InternalPaint(g); PaintChilds(); } protected void InternalPaint(Graphics g) { //可视下才画 if (isVisible()) { //初始化引用变量 int thisWidth = getWidth(); int thisHeight = getHeight(); int HBarWidth = getHBarWidth(); int VBarHeight = getVBarHeight(); //对齐方式处理后,画组件 //设置字体 g.setFont(getFont()); //外框 SetClip(g); //透明 if (!isTransparent()) { g.setColor(backColor); fillRect(g, 0, 0, thisWidth, thisHeight); } if (borderStyle == SDAConsts.bsFixed3D) { g.setColor(SDAConsts.clGray); drawLine(g, 0, 0, thisWidth, 0); drawLine(g, 0, 0, 0, thisHeight); g.setColor(SDAConsts.clBlack); drawLine(g, 1, 1, thisWidth - 1, 1); drawLine(g, 1, 1, 1, thisHeight - 1); g.setColor(SDAConsts.clBtnFace); drawLine(g, 2, thisHeight - 1, thisWidth - 2, thisHeight - 1); drawLine(g, thisWidth - 1, 2, thisWidth - 1, thisHeight - 1); g.setColor(SDAConsts.clWhite); drawLine(g, 1, thisHeight, thisWidth, thisHeight); drawLine(g, thisWidth, 1, thisWidth, thisHeight); if (isFoucsed()) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -