📄 mlist.java
字号:
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
class MList
{
int traverseIndex;
int paintIndex;
int start;
Vector items;
private int topY;
boolean isPaint;
boolean isSelected;
MList()
{
traverseIndex = 0;
paintIndex = 0;
start = 0;
items = new Vector(1, 1);
isPaint = true;
isSelected = true;
}
public int getY()
{
return topY;
}
public void setY(int i)
{
topY = i;
}
public void paint(Graphics g)
{
if(!isPaint)
return;
if(items.size() == 0)
{
paintIndex = start = traverseIndex = 0;
return;
}
if(start < 0)
start = 0;
int i = start + (Setting.DISPLAY_ITEM_NUM - 1);
if(i > items.size() - 1)
{
i = items.size() - 1;
start = i - (Setting.DISPLAY_ITEM_NUM - 1);
if(start < 0)
start = 0;
}
int j = topY + 1 + paintIndex * (Setting.ITEM_HEIGHT + 1);
if(isSelected)
{
g.setColor(0x899bff);
g.fillRect(1, j, Setting.WIDTH - 2, Setting.SELECT_ITEM_FILL_HEIGHT);
}
int k = topY + 1 + 1;
Object obj = null;
MListItem mlistitem1 = currentItem();
if(isSelected)
mlistitem1.selected = true;
for(int l = start; l <= i; l++)
{
MListItem mlistitem = (MListItem)items.elementAt(l);
mlistitem.paint(1, k, g);
k = k + Setting.ITEM_HEIGHT + 1;
}
mlistitem1.selected = false;
}
public void addItems(Vector vector)
{
items.ensureCapacity(vector.size() + items.size());
for(int i = 0; i < vector.size(); i++)
items.addElement(vector.elementAt(i));
}
public void addItem(MListItem mlistitem)
{
items.insertElementAt(mlistitem, 0);
start = paintIndex = traverseIndex = 0;
}
public void appendItem(MListItem mlistitem)
{
items.addElement(mlistitem);
}
public void up()
{
if(traverseIndex > 0)
traverseIndex--;
if(paintIndex > 0)
paintIndex--;
else
if(paintIndex == 0)
start--;
}
public void down()
{
if(traverseIndex < items.size() - 1)
traverseIndex++;
if(paintIndex < Setting.DISPLAY_ITEM_NUM - 1)
paintIndex++;
else
if(paintIndex == Setting.DISPLAY_ITEM_NUM - 1)
start++;
if(items.size() < Setting.DISPLAY_ITEM_NUM && traverseIndex == items.size() - 1)
paintIndex = traverseIndex;
}
public void pageDown()
{
if(items.size() >= Setting.DISPLAY_ITEM_NUM)
{
traverseIndex = traverseIndex + Setting.DISPLAY_ITEM_NUM;
start = start + Setting.DISPLAY_ITEM_NUM;
if(start > items.size() - Setting.DISPLAY_ITEM_NUM)
{
start = items.size() - Setting.DISPLAY_ITEM_NUM;
traverseIndex = items.size() - 1;
paintIndex = Setting.DISPLAY_ITEM_NUM - 1;
}
}
}
public void pageUp()
{
if(items.size() >= Setting.DISPLAY_ITEM_NUM)
{
traverseIndex = traverseIndex - Setting.DISPLAY_ITEM_NUM;
start = start - Setting.DISPLAY_ITEM_NUM;
if(start < 0)
home();
}
}
public void home()
{
start = 0;
traverseIndex = 0;
paintIndex = 0;
}
public void end()
{
traverseIndex = items.size() - 1;
if(items.size() < Setting.DISPLAY_ITEM_NUM)
{
paintIndex = traverseIndex;
start = 0;
} else
{
paintIndex = Setting.DISPLAY_ITEM_NUM - 1;
start = items.size() - Setting.DISPLAY_ITEM_NUM;
}
}
public MListItem currentItem()
{
return items.size() != 0 ? (MListItem)items.elementAt(traverseIndex) : null;
}
private MListItem getItemByObjectOnItem(Object obj)
{
MListItem mlistitem = null;
Object obj1 = null;
int i;
for(i = items.size() - 1; i >= 0; i--)
{
mlistitem = (MListItem)items.elementAt(i);
obj1 = mlistitem.getObject();
if(obj.equals(obj1))
return mlistitem;
}
return mlistitem;
}
public MListItem deleteLastItem()
{
Object obj = items.lastElement();
items.removeElementAt(items.size() - 1);
start = paintIndex = traverseIndex = 0;
return (MListItem)obj;
}
public boolean deleteItem(MListItem mlistitem)
{
start = paintIndex = traverseIndex = 0;
return items.removeElement(mlistitem);
}
public void moveItem(MListItem mlistitem, int i)
{
int j = items.indexOf(mlistitem);
if(j != -1 && j != i)
{
Object obj = items.elementAt(j);
items.removeElementAt(j);
items.insertElementAt(obj, i);
start = paintIndex = traverseIndex = 0;
}
}
public int size()
{
return items.size();
}
public boolean isEnd()
{
return traverseIndex == size() - 1 || size() == 0;
}
public boolean isHome()
{
return traverseIndex == 0 || size() == 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -