📄 xcanvas.java
字号:
/**
*扩展Canvas类为XCanvas
*@CopyRight:Move2008
*@Author:bedlang
*@Version 1.0 2003/7/16
*/
package mmae.ui;
import javax.microedition.lcdui.*;
import com.nokia.mid.ui.FullCanvas;
public class XCanvas extends FullCanvas implements Runnable
{
public static int left,top; //绘图顶点
public static int width,height; //绘图长宽
public static String STR_COPYRIGHT = "(c)2004 Move2008";
private Thread thread;
private int interval;
private boolean killthread = true;
private boolean stopthread = true;
/**
*构造函数,默认将left、top设为0,width设为getWidth(),height设为getHeight(),线程interval设为1000
*/
public XCanvas()
{
left = 0;
top = 0;
width = getWidth();
height = getHeight();
interval = 1000;
}
/**
*特殊构造函数<br>
*Left、Top:控件绘图顶点<br>
*Width、Height:控件绘图长宽
*/
public XCanvas(int Left, int Top, int Width, int Height)
{
setRect(Left,Top,Width,Height);
}
/**
*设置顶点坐标
*/
public void setPosition(int Left, int Top)
{
left = Left;
top = Top;
}
/**
*设置绘图区域
*/
public void setRect(int Left, int Top, int Width, int Height)
{
left = Left;
top = Top;
width = Width;
height = Height;
}
/**
*开发者在其它基于XCanvas的子类中重载此方法
*/
public void paint(Graphics g)
{
//super.paint(g);
}
/**
*开发者在其它基于XCanvas的子类中重载此方法,它将随着线程循环而被XCanvas反复调用
*/
public void update()
{
}
/**
*XCanvas默认的线程方式,通过start方法可以启动它
*/
public void run(){
if(interval==0)
{
update();
}
else
{
while(!killthread){
while (!stopthread) {
try {
thread.sleep(interval);
if(killthread) return;
update();
}
catch (InterruptedException e) {
System.out.println("XCanvas Thread Error:"+e.getMessage());
}
}
}
}
kill();
}
/**
*XCanvas的线程启动,Interval为线程跳动的间隙时间,即每过Interval时间XCavans就会自动调用update方法
*/
public void start(int Interval)
{
interval = Interval;
killthread = false;
stopthread = false;
thread = new Thread(this);
thread.start();
}
/**
*XCanvas的线程启动,这个方法调用后会启动update方法,调用一次后将自动调用kill方法释放线程
*/
public void start()
{
start(0);
}
/**
*设置线程跳动的间隙时间
*/
public void setInterval(int Interval)
{
interval = Interval;
}
/**
*得到线程跳动的间隙时间
*/
public int getInterval()
{
return interval;
}
/**
*线程暂停
*/
public void stop()
{
stopthread = true;
}
/**
*线程休眠n毫秒
*/
public void sleep(int Time)
{
try
{
this.wait(Time);
}
catch(Exception e)
{}
}
/**
*销毁线程
*/
public void kill()
{
stopthread = true;
killthread = true;
}
/**
*线程恢复
*/
public void resume()
{
stopthread = false;
}
/**
*线程是否销毁
*/
public boolean isKill()
{
return killthread;
}
/**
*线程是否暂停
*/
public boolean isStop()
{
return stopthread;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -