📄 browsebyimage.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class BrowseByImage implements Runnable, GameInterface
{
//传递来的框架
private Choose m_choose = null;
private Hashtable m_imageNames = null;
private final int m_imgWidth = 48;//图片宽
private final int m_imgHeight = 48;//图片高
private int m_imgNr = 0; //图片数量,从 1 记数
private Hashtable m_image = new Hashtable();//储存图片的哈希表
private boolean m_imageReady = false;//是否所有图象都已装载完
private byte m_window = 0;//当前窗口索引值
private byte m_excursion = 0;//选择框的偏移
private byte m_index = 0;//选择框相对于图片数量的索引值
private int[] m_label = new int[]{12, 10, 150, 30};//label的参数
private int[] m_locationX = new int[]{12, 64, 116};
private int[] m_locationY = new int[]{45, 98, 151};//3*3=9
public BrowseByImage(Choose a_choose)
{
m_choose = a_choose;
m_imageNames = m_choose.m_imageNames;
m_imgNr = (byte)m_imageNames.size();
new Thread(this).start();
}
public void paint(Graphics g)
{
paintImage(g);
paintLabel(g);
}
private String m_imgNameSelected = null;
/**
* 画一个label
* @param g Graphics
*/
private void paintLabel(Graphics g)
{
ToolBox.paintBlueRect(g, m_label[0], m_label[1], m_label[2], m_label[3], 6);
g.setColor(255, 0, 0);
m_imgNameSelected = (String)m_imageNames.get(new Integer(m_index));
m_imgNameSelected = ToolBox.trimString(m_imgNameSelected);
g.drawString( (m_index+1)+". "+m_imgNameSelected, m_label[0]+10, m_label[1]+7, 0);
}
/**
* 画图片,每行三个,整个屏幕显示三行
*
* @param g Graphics
*/
private void paintImage(Graphics g)
{
if(m_imageReady == false)
{
return;
}
g.setColor(255, 0, 0);
g.drawRect(m_locationX[m_excursion%3]-1, m_locationY[m_excursion/3]-1, m_imgWidth+1,m_imgHeight+1);
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
try
{
Image img = (Image)m_image.get( new Integer(m_window*3+i*3+j) );
if(img == null)
{
return;
}
g.drawImage(img, m_locationX[j], m_locationY[i], 0);
img = null;
}
catch(Exception e){e.printStackTrace();}
}
}
}
/**
* 反映按键
*/
public void update()
{
if (Canvas0.isKeyDown(KEY_UP))//UP
{
m_index -= 3;
m_excursion -= 3;
if(m_excursion < 0)
{
m_window--;
m_excursion += 3;
}
if(m_index < 0)
{
m_index = (byte)(m_imgNr - 1);
m_window = (byte)(m_imgNr/3 - 2);
m_excursion = (byte)(5 + m_imgNr%3);
}
}
else if (Canvas0.isKeyDown(KEY_DOWN))//DOWN
{
m_index += 3;
m_excursion += 3;
if(m_excursion >=9)
{
m_window++;
m_excursion -= 3;
}
if(m_index >= m_imgNr)
{
m_excursion = 0;
m_index =0;
m_window = 0;
}
}
else if (Canvas0.isKeyDown(KEY_LEFT))//LEFT
{
m_excursion--;
if(m_excursion <= -1)
{
m_excursion = 2;
m_window--;
}
m_index--;
if(m_index < 0)
{
m_index = (byte)(m_imgNr-1);
m_window = (byte)(m_imgNr/3-2);
m_excursion = (byte)(5+m_imgNr%3);
}
}
else if (Canvas0.isKeyDown(KEY_RIGHT))//RIGHT
{
m_excursion++;
if(m_excursion >= 9)
{
m_excursion = 6;
m_window++;
}
m_index++;
if(m_index >= m_imgNr)
{
m_index = 0;
m_window = 0;
m_excursion = 0;
}
}
else if(Canvas0.isKeyDown(KEY_FIRE))//SOFT LEFT or SOFT RIGHT
{
m_choose.setImgSelected( (Image)m_image.get( (new Integer(m_index)) ) );
m_choose.setImgNameSelected(m_imgNameSelected);
m_choose.changeState(m_choose.STATE_SELECTED);
}
else if(Canvas0.isKeyDown(SOFT_KEY_RIGHT))
{
m_choose.changeState(m_choose.STATE_MENU);
}
Canvas0.clearKeys();
}
//在线程中加载图片
public void run()
{
Enumeration enum1 = null;
enum1 = m_imageNames.keys();
for(;enum1.hasMoreElements();)
{
try
{
Integer in = (Integer)enum1.nextElement();
System.out.println("in=="+in.intValue());
System.out.println("image names = "+ (String)m_imageNames.get(in));
Image im = Image.createImage( (String)m_imageNames.get(in) );
m_image.put(in, im);
// Thread.sleep(1);
}
catch(Exception e){e.printStackTrace();}
}
m_imageReady = true;//图片已经准备好
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -