📄 drawcanvas.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 + -