📄 screensavercanvas.java
字号:
package screensaver;
import javax.microedition.lcdui.*;
import java.util.*;
public class ScreenSaverCanvas extends Canvas implements CommandListener {
private Command cmExit; // 退出按钮
private Command cmClear; // 清屏按钮
protected int startx = 0, // 线条的开始点
starty = 0,
endx = 0, // 线条的结束点
endy = 0;
private ScreenSaver midlet;
private boolean clearDisplay = false;
protected int linesDrawn = 0; // 已经画的线条
private static final int MAX_LINES = 100;
private Random random;
int R;
int G;
int B;
/*--------------------------------------------------
* 构造函数
*-------------------------------------------------*/
public ScreenSaverCanvas(ScreenSaver midlet)
{
this.midlet = midlet;
cmExit = new Command("退出", Command.EXIT, 1);
cmClear = new Command("清除", Command.SCREEN, 1);
addCommand(cmExit);
addCommand(cmClear);
setCommandListener(this);
random = new java.util.Random();
}
/*--------------------------------------------------
* 划下一条线
*-------------------------------------------------*/
protected void paint(Graphics g)
{
// 将背景设为白色(清屏)
if (clearDisplay || linesDrawn > MAX_LINES)
{
g.setColor(R, G, B);
g.fillRect(0, 0, getWidth()-1, getHeight()-1);
startx = endx = starty = endy = 0;
clearDisplay = false;
linesDrawn = 0;
return;
}
// Draw with black pen
//g.setColor(0, 0, 0);
R = (random.nextInt() >>> 1) % 255;
G = (random.nextInt() >>> 1) % 255;
B = (random.nextInt() >>> 1) % 255;
g.setColor(R, G, B);
// Draw next line
g.drawLine(startx, starty, endx, endy);
// 新的划线的开始点
startx = endx;
starty = endy;
}
/*--------------------------------------------------
* 命令事件处理
*-------------------------------------------------*/
public void commandAction(Command c, Displayable d)
{
if (c == cmExit)
midlet.exitMIDlet();
else if (c == cmClear)
{
clearDisplay = true;
R = (random.nextInt() >>> 1) % 255;
G = (random.nextInt() >>> 1) % 255;
B = (random.nextInt() >>> 1) % 255;
repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -