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

📄 maincanvas.java

📁 一个手机小说查看系统,可以进行小说的下载、查阅等操作。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import javax.microedition.lcdui.*;
import java.util.Vector;
public class MainCanvas extends Canvas implements Interface_Constants
{
    private MainMIDlet mm;
	private HTTPThread ht;
	private RmsSaver rms;
	private GuageThread gt;
	private boolean bLoaded = false;
	private boolean bLoadedIndex = false;
	private boolean bLoadedInfo = false;
	private boolean bLoadedDir = false;
	private boolean bLoadedRead = false;
	private String strdata = "";
	private String strdataInfoAll = null;
	private String strdataReadAll = null;
	private String[] strdataInfo = null;
	private String[] strdataRead = null;
	private Vector vIndex = null;
	private Vector vDir = null;
	private Vector vDirD = null;
	private Vector vDirC = null;
	private Vector vDirIndex = null;
	
	private static boolean bSaved = false;
	private static String bookid = "";
	private static String cttbookid = "";
	private static String contentid = "";
	private static String contentidprev = "";
	private static String contentidnext = "";
	private static String contentrowsat = "";
	private static boolean bReged = false;
	private static String username = "";
	private static String password = "";
	
	public static int sw = 0;
	public static int sh = 0;
	public static Font font = Utils.fontold;
	public static int fonth = Utils.fontoldh;
	public static int styleid = 0;
	public static int ctextid = 0;
	public static int rowsperpage = 0;
	public static int rowsoffindex = 0;
	public static int rowsoffinfo = 0;
	public static int rowsoffread = 0;
	private static int state = S_MENU_BEFORE;
	private static int statetoload = S_MENU;
	private int indexpage = 0;
	private int indexall = 0;
	private int selectedset = 0;
	private int selectedmenu = 0;
	private int selectedindex = 0;
	private int selecteddir = 0;
	private int selectedline = 0;
	public MainCanvas(MainMIDlet mm,HTTPThread ht)
	{
		setFullScreenMode(true);
		sw = getWidth();
		sh = getHeight();
		if(sw==240)
		{
			if(sh<310)
				sh = 306;
		}
		else if(sw==176)
		{
			if(sh<210)
				sh = 204;
			font = Utils.fontsps;
			fonth = Utils.fontspsh;
		}
		else if(sw==120)
		{
			font = Utils.fontsps;
			fonth = Utils.fontspsh;
		}
		rowsperpage = sh/fonth-3;
		this.mm = mm;
		this.ht = ht;
        this.gt = new GuageThread(this);
		loadData();
		selectedmenu = bSaved?0:1;
		//~ img1 = Image.createImage(20,20);
		//~ Graphics gg = img1.getGraphics();
		//~ gg.setColor(0x000000);
		//~ gg.fillRect(0,0,20,20);
		//~ gg.setColor(0xff0000);
		//~ gg.drawString("sdafasdgadsfgdfssdfh",0,0,0);
		//~ int[] ab = new int[20*20];
		//~ img1.getRGB(ab,0,20,0,0,20,20);
		//~ for(int i=0;i<ab.length;i++)
		//~ {
			//~ if(ab[i] == -16777216)
				//~ ab[i] = 0x00000000;
			//~ System.out.println(ab[i]);
		//~ }
		//~ img2 = Image.createRGBImage(ab,20,20,true);
	}
	//~ Image img1;
	//~ Image img2;
	public void loadData()
	{
		rms = new RmsSaver(13);
		try
		{
			String[] atem = rms.getData();
			styleid = Integer.parseInt(atem[9]);
			ctextid = Integer.parseInt(atem[10]);
			if(atem[0].equals("1"))
			{
				bSaved = true;
				cttbookid = atem[1];
				contentid = atem[2];
				contentidprev = atem[3];
				contentidnext = atem[4];
				contentrowsat = atem[5];rowsoffread = Integer.parseInt(contentrowsat);
				bReged = (atem[6]=="1")?true:false;
				username = atem[7];
				password = atem[8];
				System.out.println("MainCanvas::loadData()");
			}
		}catch(Exception e){System.out.println(e.getMessage());}
	}
	public void saveData()
	{
		rms.setData(10,String.valueOf(styleid));
		rms.setData(11,String.valueOf(ctextid));
		if(bSaved)
		{
			rms.setData(1,"1");
			rms.setData(2,cttbookid);
			rms.setData(3,contentid);
			rms.setData(4,contentidprev);
			rms.setData(5,contentidnext);
			rms.setData(6,String.valueOf(rowsoffread));
			rms.setData(6,String.valueOf(rowsoffread));
			rms.setData(7,bReged?"1":"0");
			rms.setData(8,username);
			rms.setData(9,password);
			System.out.println("MainCanvas::saveData()");
		}
	}
	public void connrequest(String url)
	{
		gt.start();
		ht.request(url);
	}
	public void connrefresh(boolean bSuccess)
	{
		bLoaded = false;
		if(bSuccess)
		{
			strdata = ht.getResult();
			//System.out.println(strdata);
			if(strdata != null)
			{
				if(statetoload == S_INDEX)
				{
					bLoadedIndex = true;
					parseIndex(strdata);
				}
				else if(statetoload == S_BOOKINFO)
				{
					parseBookInfo(strdata);
				}
				else if(statetoload == S_BOOKDIR)
				{
					parseBookDir(strdata);
				}
				else if(statetoload == S_BOOKREAD)
				{
					parseBookRead(strdata);
				}
			}
		}
		else
		{
			strdata = "网络连接异常";
			statetoload = S_ERROR;
		}
		gt.stop();
		toState(statetoload);
		repaint();
	}
	public void toState(int state)
	{
		this.state = state;
		repaint();
	}
	public void paint(Graphics g)
	{
		g.setFont(font);
		//g.setColor(0x000000);
		//g.fillRect(0,0,getWidth(),getHeight());
		paintUI(g);
		if(state == S_ERROR)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString(strdata,getWidth()/2,getHeight()/2,g.HCENTER|g.BOTTOM);
			paintButton(g,sw,sh,B_OK,0,C_TEXT[ctextid]);
		}
		else if(state == S_SETTING_BEFORE)
		{
			toState(S_SETTING);
		}
		else if(state == S_SETTING)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString("颜色风格",getWidth()/2,sh/2-40,g.HCENTER|g.BOTTOM);
			
			if(selectedset==0)
				g.drawRect(20,sh/2-65,sw-40,50);
			else if(selectedset==1)
				g.drawRect(20,sh/2-5,sw-40,50);
			
			int y = sh/2-40;
			for(int i=0;i<C_STYLE.length;i++)
			{
				int x = 40+25*i;
				g.setColor(C_STYLE[i][C_MAIN]);
				g.fillRect(x,y,20,20);
				g.setColor(C_STYLE[i][C_BMOON]);
				g.drawLine(x,y,x+20,y);//-
				g.drawLine(x,y,x,y+20);//|
				g.setColor(C_STYLE[i][C_BSUN]);
				g.drawLine(x,y+20,x+20,y+20);//-
				g.drawLine(x+20,y,x+20,y+20);//|
			}
			
			g.setColor(C_TEXT[ctextid]);
			g.drawString("字体颜色",sw/2,sh/2+20,g.HCENTER|g.BOTTOM);
			for(int i=0;i<C_TEXT.length;i++)
			{
				g.setClip(20+i*40,sh/2+20,30,20);
				g.setColor(0x888888-C_TEXT[i]);
				//g.fillRect(20+i*40,sh/2,30,20);
				g.setColor(C_TEXT[i]);
				g.drawString("字体颜色",20+i*40,sh/2+20,0);
				g.setClip(0,0,sw,sh);
			}
			paintButton(g,sw,sh,4,0,C_TEXT[ctextid]);
		}
		else if(state == S_MENU_BEFORE)
		{
			toState(S_MENU);
		}
		else if(state == S_MENU)
		{
			paintMenu(g,selectedmenu,0x0000ff,C_TEXT[ctextid]);
			paintButton(g,sw,sh,4,0,C_TEXT[ctextid]);
			paintButton(g,sw,sh,3,1,C_TEXT[ctextid]);
		}
		else if(state == S_INDEX_BEFORE)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString("loading....",sw/2,getHeight()/2,g.HCENTER|g.BOTTOM);
			paintGuage(g);
		}
		else if(state == S_INDEX)
		{
			//textPaint(g,null,font,10,10,sw-20,sh-fonth-10,0,C_TEXT[ctextid],true,true,0x0000ff,sw,getHeight());
			//g.setColor(0x0000ff);
			//g.drawRect(10-2,10-1,sw-20+3,sh-fonth-10-1);
			g.setClip(10,10,sw-20-1,sh-fonth-10-1);
			if(vIndex != null)
			{
				for(int i=0;i<vIndex.size();i++)
				{
					String[] tem = (String[])vIndex.elementAt(i);
					
					g.setColor(selectedindex==i?0x0000ff:C_TEXT[ctextid]);
					g.drawString(tem[0],sw/2,10+fonth*i,g.HCENTER|g.TOP);
				}
			}
			g.setClip(0,0,sw,sh);
			paintButton(g,sw,sh,2,0,C_TEXT[ctextid]);
			paintButton(g,sw,sh,1,1,C_TEXT[ctextid]);
			if(indexpage>0)
				g.drawString("上页←",sw/2,sh,g.RIGHT|g.BOTTOM);
			if(rowsperpage*(indexpage+1)<indexall)
				g.drawString("→下页",sw/2,sh,g.LEFT|g.BOTTOM);
		}
		else if(state == S_BOOKINFO_BEFORE)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString("loading....",sw/2,getHeight()/2,g.HCENTER|g.BOTTOM);
			paintGuage(g);
		}
		else if(state == S_BOOKINFO)
		{
			g.setColor(C_TEXT[ctextid]);
			textPaint(g,strdataInfoAll,font,10,10,sw-20,sh-fonth-10,rowsoffinfo,C_TEXT[ctextid],true,true,0x0000ff,sw,getHeight());
			paintScrollbar(g,sw-BORDERR+1-4,BORDERU,3,sh-BORDERU-BORDERD,sw,sh,rowsoffindex,rowsperpage,rowsall,0xffffff,0xffffff,0);
			paintButton(g,sw,sh,5,0,C_TEXT[ctextid]);
			paintButton(g,sw,sh,1,1,C_TEXT[ctextid]);
		}
		else if(state == S_BOOKDIR_BEFORE)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString("loading....",sw/2,getHeight()/2,g.HCENTER|g.BOTTOM);
			paintGuage(g);
		}
		else if(state == S_BOOKDIR)
		{
			//textPaint(g,null,font,10,10,sw-20,sh-fonth-10,0,C_TEXT[ctextid],true,true,0x0000ff,sw,getHeight());
			//g.setColor(0x0000ff);
			//g.drawRect(10-2,10-1,sw-20+3,sh-fonth-10-1);
			g.setClip(BORDERL,BORDERU,sw-BORDERL-BORDERR,sh-BORDERU-BORDERD);
			
			if(vDirIndex==null)vDirIndex = new Vector();
				else vDirIndex.removeAllElements();
			if(vDirIndex != null)
			{
				int linecount = 0;
				for(int i=0;i<vDir.size();)
				{
					vDirIndex.addElement(String.valueOf(i));
					String[] tem = (String[])vDir.elementAt(i);
					if(tem[0].equals("dd"))
					{
						if(tem[6]=="0")
						{
							g.setColor(selectedline==linecount?0x0000ff:C_TEXT[ctextid]);
							g.drawString("+"+tem[1],20+(Integer.parseInt(tem[5]))*20,10+fonth*(linecount-rowsoffindex),g.LEFT|g.TOP);
							
							do
							{
								i++;
								if(i<vDir.size())
								{
									String[] temm = (String[])vDir.elementAt(i);
									if(temm[0].equals("dd") && Integer.parseInt(temm[5]) <= Integer.parseInt(tem[5]))
									{
										//System.out.println(i+" "+temm[0]+" "+temm[5]);
										break;
									}
								}
							}while(i<vDir.size());
						}
						else
						{
							g.setColor(selectedline==linecount?0x0000ff:C_TEXT[ctextid]);
							g.drawString("-"+tem[1],20+(Integer.parseInt(tem[5]))*20,10+fonth*(linecount-rowsoffindex),g.LEFT|g.TOP);
							i++;
						}
					}
					else
					{
						g.setColor(selectedline==linecount?0x0000ff:C_TEXT[ctextid]);
						g.drawString(tem[1],20+(Integer.parseInt(tem[5]))*20,10+fonth*(linecount-rowsoffindex),g.LEFT|g.TOP);
						i++;
					}
					linecount++;
				}
			}
			//if(vIndex != null)
			//{
			//	for(int i=0;i<vDir.size();i++)
			//	{
			//		String[] tem = (String[])vDir.elementAt(i);
			//		g.setColor(selecteddir==i?0x0000ff:C_TEXT[ctextid]);
			//		g.drawString((tem[0].equals("dd")?(tem[6]=="1"?"-":"+"):"")+tem[1],20+(Integer.parseInt(tem[5]))*20,10+fonth*i,g.LEFT|g.TOP);
			//	}
			//}
			g.setClip(0,0,sw,sh);
			paintButton(g,sw,sh,6,0,C_TEXT[ctextid]);
			paintButton(g,sw,sh,1,1,C_TEXT[ctextid]);
		}
		else if(state == S_BOOKREAD_BEFORE)
		{
			g.setColor(C_TEXT[ctextid]);
			g.drawString("loading....",sw/2,getHeight()/2,g.HCENTER|g.BOTTOM);
			paintGuage(g);
		}
		else if(state == S_BOOKREAD)
		{
			textPaint(g,strdataReadAll,font,BORDERL,BORDERU,sw-BORDERL-BORDERR,sh-BORDERU-BORDERD-5,rowsoffread,C_TEXT[ctextid],true,false,0x0000ff,sw,sh);
			paintScrollbar(g,sw-BORDERR+1-4,BORDERU,3,sh-BORDERU-BORDERD,sw,sh,rowsoffread,rowsperpage,rowsall,0xffffff,0xffffff,0);
			paintButton(g,sw,sh,7,0,C_TEXT[ctextid]);
			paintButton(g,sw,sh,1,1,C_TEXT[ctextid]);
			
			g.setColor(C_TEXT[ctextid]);
			g.drawString("前章←",sw/2,sh,g.RIGHT|g.BOTTOM);
			g.drawString("→后章",sw/2,sh,g.LEFT|g.BOTTOM);
		}
		//~ g.drawImage(img1,0,0,0);
		//~ g.drawImage(img2,20,0,0);
	}
	public void paintUI(Graphics g)
	{
		g.setColor(C_STYLE[styleid][C_MAIN]);
		g.fillRect(0,0,sw,sh);
		
		g.setColor(C_STYLE[styleid][C_BSUN]);
		g.drawLine(sw-BORDERR,BORDERU,sw-BORDERR,sh-BORDERD);//|
		g.setColor(C_STYLE[styleid][C_BMOON]);
		g.drawLine(BORDERL,BORDERU,sw-BORDERR,BORDERU);//-
		g.setColor(C_STYLE[styleid][C_BMOON]);
		g.drawLine(BORDERL,BORDERU,BORDERL,sh-BORDERD);//|
		g.setColor(C_STYLE[styleid][C_BSUN]);
		g.drawLine(BORDERL,sh-BORDERD,sw-BORDERR,sh-BORDERD);//-
	}
	public void keyPressed(int k)
	{
		//if(k==-6 || k==-21)
		//	k = KEYL;
		//if(k==-7 || k==-22)
		//	k = KEYR;
		int ga = getGameAction(k);
		if(state == S_ERROR)
		{
			if(k==KEY_NUM1)
			{
				toState(S_MENU_BEFORE);
			}
		}
		else if(state == S_SETTING)
		{
			if(k==KEY_NUM1)
			{

⌨️ 快捷键说明

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