?? 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 + -