⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browsebyimage.java

📁 用java写的一个用来显示图片的类 希望大家能用得上
💻 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 + -