📄 droplist.java
字号:
package com.ismyway.fairyui;
import javax.microedition.lcdui.Graphics;
import com.ismyway.anyview.others.Settings;
import com.ismyway.util.ArrayList;
import com.ismyway.util.Theme;
public class DropList extends DisplayableBlock {
private ArrayList items = new ArrayList();
private int size = 60;
private int selectedIndex = -1;
private String selectedText = "";
private ValueChangeListener itemListener = null;
public DropList() {
addCommand(EMPTY_CMD);
}
public DropList(String[] items) {
this();
for (int i = 0; null != items && i < items.length; i++) {
this.items.add(items[i]);
}
}
public void add(String item) {
items.add(item);
}
public void clear() {
items.clear();
}
public void delete(int index) {
if (index > -1 && index < items.size()) {
items.remove(index);
}
}
public void setText(String text) {
selectedText = text;
}
public String getText() {
return selectedText;
}
public int getSelectedIndex() {
return selectedIndex;
}
public ArrayList getItems() {
return items;
}
public void paint(Graphics g, int adjustx, int adjusty) {
int x, y, endy;
x = getLeft() - adjustx;
y = getTop() - adjusty;
endy = y + getHeight();
if (endy < 0) {
return;
}
Theme.drawDropList(g, x, y, getWidth());
int offx = getLeft() + 1 - adjustx, offy = getTop() + 1 - adjusty;
int clipWidth = getWidth() - 2;
g.setClip(offx, offy, clipWidth, 18);
if (isSelected()) {
Theme.drawSelectedBackground(g, offx, offy, clipWidth, 19);
} else {
g.setColor(Theme.Background);
g.fillRect(offx, offy, clipWidth, 19);
}
offy = getTop() + (20 - getFont().getHeight()) / 2 - adjusty;
if (isSelected()) {
g.setColor(Theme.TextLight);
} else {
g.setColor(Theme.TextColor);
}
g.setFont(getFont());
g.drawString(selectedText, offx + 2, offy, ANCHOR);
Theme.drawArrow(g, Theme.Arrow, getLeft() + getWidth() - 9 - adjustx,
getTop() - adjusty + 8, Theme.DOWN);
restoreClip(g);
}
public void putInSequence(int[] rect, int width) {
int height = 22;
setInnerLeft(rect[0]);
if (rect[3] > height) {
setInnerTop(rect[1] + rect[3] - getFont().getHeight()
- Settings.HORPADDING);
} else {
setInnerTop(rect[1]);
}
int minWidth = 20;
int w = size * 5; //输入框的宽
if (minWidth < w) {
minWidth = w;
}
if (minWidth > width) {
minWidth = width;
}
setWidth(minWidth);
setHeight(height);
int r0 = rect[0];
int r1 = rect[1];
int r3 = rect[3];
if (rect[2] < minWidth) { //当前行不足以显示输入框
setInnerTop(rect[1] + rect[3] + Settings.HORPADDING);
setInnerLeft(Settings.VECPADDING);
rect[0] = Settings.VECPADDING + minWidth;
rect[1] = r1 + r3;
rect[2] = width - minWidth;
rect[3] = height;
} else {
rect[0] = r0 + minWidth + Settings.VECPADDING;
rect[1] = r1;
rect[2] = width - minWidth - r0;
rect[3] = height;
}
}
public void setSelectedIndex(int selectedIndex) {
this.selectedIndex = selectedIndex;
setText((String) items.get(selectedIndex));
}
protected void itemStateChange() {
if (null != itemListener) {
itemListener.valueChanged(this);
}
}
public final ValueChangeListener getItemListener() {
return itemListener;
}
public final void setItemListener(ValueChangeListener itemListener) {
this.itemListener = itemListener;
}
public boolean pointerReleased(int x, int y) {
if (x > getLeft() && x < getLeft() + getWidth() && y > getTop()
&& y < getTop() + getHeight()) {
return true;
}
return false;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -