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

📄 drawcanvas.java

📁 几个不错的手机程序例子
💻 JAVA
字号:
/*
 * DrawCanvas.java
 *
 * Copyright 2001 SkyArts. All Rights Reserved.
 */
import javax.microedition.lcdui.*;
import javax.microedition.io.*;

import java.io.*;

/**
 * 从网络读取文本字符串的Canvas类
 * @author  Hideki Yonekawa
 * @version 1.0
 */
class DrawCanvas extends Canvas implements  CommandListener, Runnable {
	/** 存放画面宽度的变量 */
	private int					screenWidth;
	/** 存放画面高度的变量 */
	private int					screenHeight;

	/** 存放NetworkTestText对象--MIDlet的变量 */
	private NetworkTestText		networkTest;

	/** Exit指令变量 */
	private Command				exitCmd				= new Command("Exit", Command.SCREEN, 5);

	/** 存放画面显示用字符串的变量 */
	private String				drawSt				= null;

	/** 存放文本文件的URL的变量 */
	private String				url;

	/** 构造函数 */
	DrawCanvas(NetworkTestText networkTest, String url) {
		this.networkTest = networkTest;
		this.url = url;

		//取得宽度与高度
		screenWidth = getWidth();
		screenHeight = getHeight();

		//从网络读取文本文件
		new Thread(this).start();

		addCommand(exitCmd);
		//登录Command listeners
		setCommandListener(this);
	}

	public void run() {
		HttpConnection connection = null;
		try {
			//执行连接
			connection = (HttpConnection)Connector.open(this.url);
			if(connection.getResponseCode() == HttpConnection.HTTP_OK) {
			//当HTTP的响应状态码为OK(200)
				InputStreamReader reader = null;
				StringBuffer stBuffer = new StringBuffer();
				try {
					//流打开并开始读取
					InputStream in = connection.openInputStream();
					reader = new InputStreamReader(in);
					char[] readChars = new char[64];
					int readLeng;
					while((readLeng = reader.read(readChars, 0, readChars.length)) != -1) {
						//读取处理
						stBuffer.append(readChars, 0, readLeng);
					}

					drawSt = stBuffer.toString();
					repaint();
				}catch(Exception e) {
					drawSt = e.toString();
					repaint();
				}finally {
					if(reader != null) {
						reader.close();
					}
				}
			}else {
			//当URL无效时
				drawSt = "URL无效";
			}
		}catch(Exception e) {
		//当URL无效时
			drawSt = e.toString();
			repaint();
		}finally {
			if(connection != null) {
				try {
					connection.close();
				}catch(Exception ex) {}
			}
		}
		repaint();
	}


	/**
	 * 描绘用的方法。通常不会直接由自己类来调用
	 * @param	g	Graphics对象
	 */
	protected void paint(Graphics g) {
		//背景涂白
		g.setColor(0x00FFFFFF);
		g.fillRect(0, 0, screenWidth, screenHeight);

		g.setColor(0x00000000);
		if(drawSt != null) {
			g.drawString(drawSt, 0, 0, Graphics.TOP|Graphics.LEFT);
		}else {
			g.drawString("loading...", 0, 0, Graphics.TOP|Graphics.LEFT);
		}
	}

	/** 指令的事件发生时所调用的方法 */
	public void commandAction(Command c, Displayable s) {
		if(c == exitCmd) {//EXIT指令
			//调用NetworkTestImg类的doExit方法,并结束MIDlet
			networkTest.doExit();
		}
	}
}

⌨️ 快捷键说明

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