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

📄 firstcanvas.java

📁 飞信的j2me源代码
💻 JAVA
字号:
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.Sprite;

public class FirstCanvas extends Canvas
{

    private int width;
    private int height;
    private int leftKey;
    private int rightKey;
    private String leftString;
    private String rightString;
    private byte length;
    private int flag;
    private Image img_BackGround;
    private Image img_DaGou;
    private Image destImage;
    private Font chooseFont;
    private Sprite sp_FirstAnimation;
    private String mainRemind;
    private String branchRemind;
    private String pressAnyKey;
    private int yofBranchRemind;
    private int charHeight;

    public FirstCanvas()
    {
        width = 0;
        height = 0;
        leftKey = -6;
        rightKey = -7;
        length = 10;
        flag = 0;
        img_BackGround = null;
        img_DaGou = null;
        destImage = null;
        chooseFont = null;
        mainRemind = "请按照提示操作,否则您将无法正常使用。若设置错误,请删除后重新下载。";
        branchRemind = "请按确定";
        pressAnyKey = "请按任意键继续";
        yofBranchRemind = 0;
        charHeight = 0;
        setFullScreenMode(true);
        width = getWidth();
        height = getHeight();
        readImage();
        chooseFont = Font.getDefaultFont();
        charHeight = chooseFont.getHeight();
        leftString = "确定";
        rightString = "确定";
    }

    protected void paint(Graphics g)
    {
        setFullScreenMode(true);
        height = getHeight();
        drawSprite(g);
        g.setColor(0xffffff);
        g.fillRect(0, 0, width, height);
        drawText(g);
    }

    public void showNotify()
    {
        setFullScreenMode(true);
        height = getHeight();
    }

    private void drawText(Graphics g)
    {
        g.setColor(0xe7ebff);
        g.fillRect(0, 0, width, height);
        g.drawImage(img_BackGround, width / 2, height / 2, 3);
        g.setColor(0);
        g.setFont(chooseFont);
        yofBranchRemind = drawAdjustString(mainRemind, 0, 0, g);
        if(0 == flag)
        {
            g.drawString(branchRemind, (width - chooseFont.stringWidth(branchRemind)) / 2, yofBranchRemind, 20);
            g.drawString(leftString, 0, height - chooseFont.getHeight(), 20);
        } else
        if(1 == flag)
        {
            g.drawString("请再次按确定", (width - chooseFont.stringWidth("请再次按确定")) / 2, yofBranchRemind, 20);
            g.drawString(rightString, width, height - chooseFont.getHeight(), 24);
        } else
        if(2 == flag)
            g.drawString(pressAnyKey, (width - chooseFont.stringWidth(pressAnyKey)) / 2, yofBranchRemind, 20);
    }

    public void keyPressed(int i)
    {
        if(0 == flag)
            leftKey = i;
        else
        if(1 == flag)
            rightKey = i;
        else
        if(2 == flag)
            MMIDlet.instance.saveKeyValues(leftKey, rightKey);
        flag++;
        repaint();
    }

    private void drawSprite(Graphics g)
    {
    }

    /*private int drawAdjustString(String s, int i, int j, Graphics g)
    {
        int k = s.length();
        int l = chooseFont.charWidth('\u6C49');
        int i1 = 0;
        int j1 = (width - 1) / l;
        boolean flag1 = false;
label0:
        do
        {
label1:
            {
                if(i1 + j1 >= k)
                {
                    j1 = k - i1;
                    if(j1 == 0)
                        break label0;
                    int k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                    if(k1 <= width - 1)
                    {
                        g.drawSubstring(s, i1, j1, i, j, 20);
                        j += charHeight;
                        break label0;
                    }
                }
                int l1;
                do
                {
                    l1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                    if(l1 >= width - 1)
                        continue;
                    j1++;
                    if(i1 + j1 >= k)
                    {
                        j1 = k - i1;
                        l1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                        if(l1 >= width - 1)
                        {
                            j1--;
                            if(isBiaoDianFuHao(s.charAt(i1 + j1)) && !isBiaoDianFuHao(s.charAt((i1 + j1) - 1)))
                                j1--;
                        }
                        break label1;
                    }
                    l1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                } while(l1 < width - 1);
                do
                {
                    j1--;
                    l1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                } while(l1 >= width - 1);
                if(isBiaoDianFuHao(s.charAt(i1 + j1)) && !isBiaoDianFuHao(s.charAt((i1 + j1) - 1)))
                    j1--;
            }
            g.drawSubstring(s, i1, j1, i, j, 20);
            j += charHeight;
            i1 += j1;
        } while(true);
        return j;
    }*/
    
        private int drawAdjustString(String s, int i, int j, Graphics g)
    {
        int k = s.length();
        int l = chooseFont.charWidth('\u6C49');
        int i1 = 0;
        int j1 = (width - 1) / l;
        int k1 = 0;
        while(true)
        {
            
            if(i1 + j1 >= k)
            {
                j1 = k - i1;
                if(j1 != 0){
                    k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                    if(k1 <= width - 1)
                    {
                        g.drawSubstring(s, i1, j1, i, j, 20);
                        j += charHeight;
                    }
                }
                break;
            }
               
            while( true ){
                k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                if(k1 < width - 1){	//goto label4 if int1 >= int2
                    j1++;
                    if( i1 + j1 >= k){
                        j1 = k - i1;
                        k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                        if( k1 >= width - 1 ){	//goto label6 if int1 < int2
                            j1--;
                            if(isBiaoDianFuHao(s.charAt(i1 + j1)) && !isBiaoDianFuHao(s.charAt(i1 + j1-1))){
                                j1--;
                            }
                        }
                        break;
                    }
                    k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1)); 
                }
                if( k1 < width - 1 ){ 
                    continue;
                }
                do{
                    j1--;
                    k1 = chooseFont.stringWidth(s.substring(i1, i1 + j1));
                }while( k1 >= width - 1 );
                if(isBiaoDianFuHao(s.charAt(i1 + j1)) && !isBiaoDianFuHao(s.charAt(i1 + j1-1))){
                    j1--;
                }
                break;
            } 

            g.drawSubstring(s, i1, j1, i, j, 20);
            j += charHeight;
            i1 += j1;
            continue;
        }
        return j;
    }

    private static boolean isBiaoDianFuHao(char c)
    {
        return -1 != "、,。:;?!,.:;?!".indexOf(c);
    }

    public void readImage()
    {
        try
        {
            InputStream inputstream = getClass().getResourceAsStream("/res/" + Integer.toString(width) + "/i.png");
            byte abyte0[] = new byte[inputstream.available()];
            inputstream.read(abyte0);
            byte byte0 = abyte0[0];
            int i=0;
            int j = 1;
            for(int k = 0; k < byte0; k++)
            {
                i = (abyte0[j] & 0xff) << 8 | abyte0[j + 1] & 0xff;
                j += 2;
                if(6 == k)
                    img_BackGround = Image.createImage(abyte0, j, i);
                j += i;
            }

        }
        catch(IOException ioexception) { }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -