listmidlet.java
来自「example2 众多JAVA实例源码...学习java基础的好帮手」· Java 代码 · 共 176 行
JAVA
176 行
package opusmicro.demos.scalllist;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Font;
public class ListMIDlet extends MIDlet{
public ListMIDlet(){
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
ListCanvas lc = new ListCanvas();
MyItem lt;
for(int i=0;i<16;i++){
lt = new MyItem("item "+i);
lc.addChild(lt);
}
Display.getDisplay(this).setCurrent(lc);
}
}
interface ListItem{
// void paint(Graphics g, int x, int y, int width,int height, boolean focus);
}
class MyItem implements ListItem{
public int itemHeight = 26;
String text;
int x,y;
public MyItem(String text){
this.text = text;
}
public void paint(Graphics g,int x,int y, int width, int height, boolean focus) {
this.y = y;
if(focus){
g.setColor(0xff27);
}else{
g.setColor(0xff);
}
g.fillRect(x, y, width, height);
System.out.println("frank: text = " + text);
if(text!=null){
g.setColor(0xffabcd);
g.drawString(text, x+1, y + ( (height + Font.getDefaultFont().getHeight()) /2) , Graphics.LEFT | Graphics.BOTTOM);
}
}
}
class ListCanvas extends Canvas {
Vector children = new Vector();
private int position = 0;
private boolean positionChanged = false;
private int startY = 0;
private int windowStart = 0;
private int widgetHeight = getHeight();
private int widgetWidth = getWidth();
private int startX = 0;
private int padding = 0;
private int scrollbarWidth = 6;
MyItem item;
public ListCanvas() {
}
public void addChild(MyItem item) {
children.addElement(item);
}
public void previous() {
if ( position > 0) {
position--;
positionChanged = true;
}
repaint();
serviceRepaints();
}
public void next() {
if ( position < children.size() - 1) {
position++;
positionChanged = true;
}
repaint();
serviceRepaints();
}
public void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
switch ( action) {
case Canvas.UP:
previous();
break;
case Canvas.DOWN:
next();
break;
}
}
public void keyRepeated(int keyCode) {
keyPressed(keyCode);
}
public void determineWindowStart(){
if ( positionChanged) {
positionChanged = false;
int positionEndY;
int postitionStartY = startY;
for ( int i = windowStart, stop = children.size() ; i < position && i < stop ; i++) {
postitionStartY += ((MyItem) children.elementAt(i)).itemHeight;
}
positionEndY = postitionStartY + ((MyItem) children.elementAt(position)).itemHeight;
if ( postitionStartY <= startY) {
// move up
windowStart = position;
}
else if ( positionEndY > (startY + widgetHeight)) {
// move down
for ( int i = windowStart, stop = children.size() ; positionEndY > (startY + widgetHeight)
&& i <= position && i < stop ; i++) {
windowStart++;
positionEndY -= ((MyItem) children.elementAt(i)).itemHeight;
}
}
}
}
protected void paint(Graphics g) {
g.setColor(0xffff);
g.fillRect(0, 0, widgetWidth, widgetHeight);
int y =0, x = 0;
boolean hasFocus = true;
startY = y;
startX = x;
int[] clip = { g.getClipX(), g.getClipY(), g.getClipWidth(), g.getClipHeight() };
g.setClip(x, y, widgetWidth, widgetHeight);
if ( !children.isEmpty()) {
int count = children.size();
g.setColor(0x1a);
//g.fillRect(x,y,widgetWidth,widgetHeight);
determineWindowStart();
System.out.println("windowstart "+windowStart);
// y += padding;
for ( int i = windowStart ; i < count && y < (startY + widgetHeight - padding - padding) ; i++) {
item = (MyItem) children.elementAt(i);
item.paint(g, x + padding, y, widgetWidth - scrollbarWidth - padding - 1, startY
+ 24, hasFocus && (position == i));
y += item.itemHeight;
// g.setColor(0xffaa);
// g.fillRect(x+padding, y-1, getWidth()-padding-scrollbarWidth, 1);
// if ( i<=3) {
//System.out.println("i "+i + " txt=" + item.text);
//System.out.println("position "+position);
//System.out.println("positiony "+i+" "+item.y + " : " + x + padding + "," + y + "," + (widgetWidth - scrollbarWidth - padding - 1) + "," + (startY+ 24));
//System.out.println("title "+((MyItem) children.elementAt(0)).text);
// }
}
//System.out.println("y "+y);
if ( windowStart > 0 || y > ((startY + widgetHeight - padding - padding))) {
double sliceHeight = (((double) widgetHeight) / count);
int sliceY = (int) Math.floor((position * sliceHeight) + .5) + startY + 1;
g.setColor(0xC8D8f);
g.fillRect(x + widgetWidth - scrollbarWidth, sliceY, scrollbarWidth - 1, (int) Math.floor(.5 + sliceHeight));
}
}
g.setClip(clip[0], clip[1], clip[2], clip[3]); //finally
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?