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

📄 canvas.java

📁 基于J2ME的一个可用的手机蓝牙程序
💻 JAVA
字号:
import javax.microedition.lcdui.Graphics;

public class Canvas extends  javax.microedition.lcdui.Canvas  implements Runnable{

	static final short WIDTH = 176;
	static final short HEIGHT = 208;
	
	static final byte G_MENU = 0;
	static final byte G_SERVER    = 1;
	static final byte G_CLIENT    = 2;
	static final byte G_OK    = 3;
	private byte G_STATE;
	
	private int count;
	private int loadcount;
	
	private Server server;
	private Client client;
	private boolean isServer;
	private String data="0";
	
	public Canvas(){
		this.setFullScreenMode(true);
		G_STATE=0;
		count=0;
		loadcount=0;
		
		
		new Thread(this).start();
	}
	protected void paint(Graphics g) {
		clearscreen(g,0xFFFFFF);
		// TODO 自动生成方法存根
		switch(G_STATE){
		case G_MENU:
			g.setColor(0x000000);
			g.drawRect(0,HEIGHT / 8 +20+count*20,WIDTH-1,20-1);
			if(count==0){
				g.setColor(0x000000);
			}else{
				g.setColor(0x666666);
			}
			g.drawString("建立游戏", WIDTH / 2, HEIGHT / 8+20+2, Graphics.HCENTER| Graphics.TOP);
			if(count==1){
				g.setColor(0x000000);
			}else{
				g.setColor(0x666666);
			}
			g.drawString("加入游戏", WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);
			pcommand(g, "返回", "确定");
			break;
		case G_SERVER:
			g.setColor(0x666666);
			g.drawString("我的地址:", WIDTH / 2, HEIGHT / 8+20, Graphics.HCENTER| Graphics.TOP);
			g.drawString(server.getAdd(), WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);

			pcommand(g, "退出", "");
			break;
		case G_CLIENT:
			if(count<0){
				pcommand(g, "", "搜索");
			}else{
				if(client.getAddsize()<1){
					char[] cha={'查','找','服','务','中','.','.','.'};
					int w=g.getFont().charWidth(cha[0]);
					g.setColor(0x666666);
					for(int i=0;i<cha.length;i++){
						if(loadcount%9==i){
							g.drawChar(cha[i],WIDTH / 2-4*w+i*w,HEIGHT / 8+20-2+20,Graphics.LEFT| Graphics.TOP);
						}else{
							g.drawChar(cha[i],WIDTH / 2-4*w+i*w,HEIGHT / 8+20+2+20,Graphics.LEFT| Graphics.TOP);
						}
					}
					pcommand(g, "返回", "搜索");
				}else{
					g.setColor(0x666666);
					g.drawString("搜索到的地址:", WIDTH / 2, HEIGHT / 8, Graphics.HCENTER| Graphics.TOP);
					g.setColor(0x000000);
					g.drawRect(0,HEIGHT / 8 +20+count*20,WIDTH-1,20-1);
					for(int i=0;i<client.getAddsize();i++){
						if(count==i){
							g.setColor(0x000000);
						}else{
							g.setColor(0x666666);
						}
						g.drawString(client.getAdd(i), WIDTH / 2, HEIGHT / 8+20+2+20*i, Graphics.HCENTER| Graphics.TOP);
					}
					pcommand(g, "连接", "搜索");
				}
			}
			break;
		case G_OK:
			g.setColor(0x000000);
			g.drawString(data, WIDTH / 2, HEIGHT / 8+20+2+20, Graphics.HCENTER| Graphics.TOP);
			break;
		}

	}

	
	private void clearscreen(Graphics g, int color) {
		g.setClip(0, 0, WIDTH, HEIGHT);
		g.setColor(color);
		g.fillRect(0, 0, WIDTH, HEIGHT);
	}
	
	private void pcommand(Graphics g, String left, String right) {
		g.setColor(0x000000);
		if (!left.equals("")) {
			g.drawString(left, 0, HEIGHT, Graphics.LEFT | Graphics.BOTTOM);
		}
		if (!right.equals("")) {
			g.drawString(right, WIDTH, HEIGHT, Graphics.RIGHT| Graphics.BOTTOM);
		}
	}
	
	public void run() {
		// TODO 自动生成方法存根
		while(true){
			switch(G_STATE){
			case G_MENU:
			case G_SERVER:
			case G_CLIENT:
			case G_OK:
				loadcount++;
				break;
			}
			try{
				Thread.sleep(100);
			}catch(Exception e){}
			repaint();
		}
	}
	
	static final int UP = -1;
	static final int DOWN = -2;
	static final int LEFT = -3;
	static final int RIGHT = -4;
	static final int FIRE = -5;
	static final int SOFTKEY1 = -6;
	static final int SOFTKEY2 = -7;
	public void keyPressed(int keyCode) {
		switch(G_STATE){
		case G_MENU:
			switch(keyCode){
			case UP:
				count=0;
				break;
			case DOWN:
				count=1;
				break;
			case SOFTKEY1:
				Midlet.exit();
				break;
			case SOFTKEY2:
				if(count==0){
					isServer=true;
					server=new Server(this);
					count=0;
					G_STATE=G_SERVER;
				}else{
					isServer=false;
					client=new Client(this);
					count=-1;
					G_STATE=G_CLIENT;
				}
				break;
			}
			break;
		case G_SERVER:
			switch(keyCode){
			case UP:
				break;
			case DOWN:
				break;
			case SOFTKEY1:
				break;
			case SOFTKEY2:
				break;
			}
			break;
		case G_CLIENT:
			switch(keyCode){
			case UP:
				break;
			case DOWN:
				break;
			case SOFTKEY1:
				client.makeConn(count);
				G_STATE=G_OK;
				break;
			case SOFTKEY2:
				count=0;
				client.dosearch();
				break;
			}
			break;
		case G_OK:
			switch(keyCode){
			case UP:
				if(isServer){
					server.send("1");
				}else{
					client.send("1");
				}
				break;
			case DOWN:
				if(isServer){
					server.send("2");
				}else{
					client.send("2");
				}
				break;
			case SOFTKEY1:
				if(isServer){
					server.send("3");
				}else{
					client.send("3");
				}
				break;
			case SOFTKEY2:
				if(isServer){
					server.send("4");
				}else{
					client.send("4");
				}
				break;
			}
			break;
		
		}
	}
	
	
	public void change() {
		// TODO 自动生成方法存根
		G_STATE=G_OK;
		
	}
	
	public void read(byte[] temp){
		data=new String(temp);
	}

	

}

⌨️ 快捷键说明

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