📄 showscroll.java
字号:
package com.mingzi.ui;
import java.io.IOException;
import java.util.Calendar;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import com.mingzi.contrl.ListMail;
public class ShowScroll extends Canvas{
ListMail listMail;
//定义变量,height为屏幕的高度,width 屏幕的宽度,spacing 单位信息条目的高度,menuIndex表示信息的索引
private int height,width,spaing=35,menuIndex,displayIndex,currentHeight=0,scrollHeight;
private String[] name=null; //定义用于存姓名和消息的数组
private int i=0,pageSize;
private Font info=null;
/**
* 结构体 来初始化变量
*/
public ShowScroll(ListMail listMail){
this.listMail=listMail;
height=getHeight(); //取得屏幕高度
width=getWidth(); //读的屏幕的宽度
//创建两个字符串数组并初始化数据
name=new String[]{"李明梓","黄亮","谢挺疯","老婆","世界","老天","谢挺疯","老婆","世界","老天","谢挺疯","老婆","世界","老天"};
info=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_LARGE);
pageSize=height/info.getHeight()-1;
}
/**
* 必须覆盖Canvas中的paint方法,对屏幕显示进行我们所需的绘制
*/
protected void paint(Graphics g) {
//----进行手机画面的初化---------
g.setColor(246,246,246); //设置背景色rgb
g.fillRect(0,0,width,height);//画跟屏幕一样大小的矩形
g.setColor(00,00,00);
g.setFont(info);
int j=0;
for(;i<name.length;i++,j++){
if(i==menuIndex){
g.setColor(127,127,127);
g.drawRect(0,j*info.getHeight(),width-10,info.getHeight());
g.setColor(00,00,00);
g.drawString(name[i],60,j*(info.getHeight()),g.RIGHT|g.TOP);
}else{
g.drawString(name[i],60,j*(info.getHeight()),g.RIGHT|g.TOP);
}
}
drawScrollV(g,0xFF00FF,0xFF00FF,null,null,width-10,0,10,300,menuIndex*30,height);
}
protected void keyPressed(int code){
if((getGameAction(code)==Canvas.UP)&&menuIndex-1>=0){//判断是否是按向上按键 并判断信息的索引是否越界
menuIndex--; //信息索引减1
System.out.println("up " +menuIndex);
/* if(menuIndex<3){
i=Math.abs(displayIndex--);
}*/
i=0;
repaint();
}
if((getGameAction(code)==Canvas.DOWN)&&menuIndex+1<name.length){ //判断是否是按向下按键 并判断信息的索引是否越界
menuIndex++; //信息索引加1
System.out.println("down" +menuIndex);
i=0;
if(menuIndex>=3){
i=displayIndex++;
}
repaint();
}else{
menuIndex=0;
displayIndex=0;
i=0;
repaint();
}
}
public int updateDisplay(){
if(menuIndex<3){
return Math.abs(displayIndex--);
}else{
return ++displayIndex;
}
}
/**
* 画垂直滚动条
* @param g:用于绘制的Graphics
* @param boardColor:边框颜色
* @param blockColor:滑块颜色
* @param blockImage:滑块图片
* @param boardImage:边框图片
* @param startx:起始坐标X
* @param starty:起始坐标Y
* @param sw:滚动条宽度
* @param sh:滚动条高度
* @param current:当前示数
* @param total:总数
*/
public static void drawScrollV(Graphics g,int boardColor,int blockColor,Image boardImage,Image blockImage,int startx,int starty,int sw,int sh,int current,int total)
{
g.setColor(0);
g.fillRect(startx,starty,sw,sh);
if(boardImage!=null)
g.drawImage(boardImage,startx,starty,0);
else
if(blockImage==null)
{
g.setColor(boardColor);
g.drawRect(startx,starty,sw,sh);
}
if(blockImage!=null)
{
g.setColor(boardColor);
g.drawRect(startx,starty,blockImage.getWidth()+1,sh);
if(current==total)
current=total+1;
g.drawImage(blockImage,startx+1,starty+1+((current-1)*(sh-blockImage.getHeight()-1)/total),0);
}
else
{
/*计算滑块长度*/
int blockH=0;
if(sh/total>6)
blockH=sh/total;
else
blockH=8;
g.setColor(blockColor);
g.fillRect(startx+1,starty+1+Math.max((current-1)*(sh-1)/total,0),sw-1,blockH);
}
}
public void drawScroll(Graphics g, int x, int y, int h, int selectIndex,int ci) {
g.setClip(x, y, 4, h + 1);
g.clipRect(x, y, 4, h + 1);
g.setColor(0);
g.drawRect(x, y, 3, h);
/**
* 画滑动块
*/
int height = h;
if (ci > 0) {
height = h - 3 * ci;
}
if (height < 10) {
height = 10;
}
// System.out.println("gaodu : " + height);
g.setColor(255, 218, 125);
g.fillRect(x, y + selectIndex * 3, 3, height);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -