mycanvas.java
来自「example2 众多JAVA实例源码...学习java基础的好帮手」· Java 代码 · 共 228 行
JAVA
228 行
package opusmicro.demos.input;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.*;
import java.util.*;
public class MyCanvas extends GameCanvas {
public static final String[] keys = { "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
StringBuffer width = new StringBuffer();
Timer keyTimer;
MultiColorMIDlet multicolor;
public static char ch;
public boolean keypress;
int previndex = 0;
public int counter = -1;
int index = -1;
int print = 0;
int white_space = 6;
public StringBuffer sms;
int baseline = 10;
int y_axis = 12;
int line = 1;
char last;
Font font;
Graphics g;
public long time;
// ///////////////////////////Sms Item///////////////
Form smsfrm;
TextField smsField;
// //////////////////////Char Selection speed/////////////
public boolean first;
int selection_speed = 1000;
// ///////////////////////Color////////////////////
public int red = 0, green = 0, blue = 255;
// ///////////////////////Background////////////////
public int back_red = 250, back_green = 250, back_blue = 250;
Form menu;
public MyCanvas(MultiColorMIDlet multicolor) {
super(false);
first = true;
this.multicolor = multicolor;
sms = new StringBuffer();
g = getGraphics();
font = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_LARGE);
keyTimer = new Timer();
keyTimer.schedule(new KeyConfirmer(this), 500, selection_speed);
}
public void setbackGround(int r, int g, int b) {
back_red = r;
back_green = g;
back_blue = b;
}
public void setTextcolor(int r, int g, int b) {
red = r;
green = g;
blue = b;
}
public void paint(Graphics g) {
g.setColor(back_red, back_green, back_blue);
g.fillRect(0, 0, getWidth(), getHeight());
redrawAll();
}
public void callPaint(char ch) {
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
if ( first) {
g.fillRect(0, 0, getWidth(), getHeight());
first = false;
reset();
redrawAll();
first = false;
}
g.fillRect(baseline, y_axis, font.charWidth(this.last) + 2, font.getHeight());
g.setColor(red, green, blue);
g.setFont(font);
g.drawChar(ch, baseline, line * 24, g.LEFT | g.BASELINE);
flushGraphics();
}
public void Blink() {
Graphics g = getGraphics();
g.setColor(0, 0, 0);
g.drawLine(baseline, y_axis, baseline, 2 * line * 12);
flushGraphics();
}
public void Unblink() {
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
g.drawLine(baseline, y_axis, baseline, 2 * line * 12);
flushGraphics();
}
public void ConfirmPaint(char ch) {
Graphics g = getGraphics();
sms.append(ch);
g.setColor(red, green, blue);
g.setFont(font);
g.drawChar(ch, baseline, line * 24, g.LEFT | g.BASELINE);
baseline += font.charWidth(ch);
if ( baseline > getWidth() - 30) {
width.append((char) baseline);
baseline = 10;
y_axis += 24;
line += 1;
}
flushGraphics();
}
public synchronized void deleteChar() {
if ( sms.charAt(sms.length() - 1) == ' ') {
baseline -= white_space;
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
g.fillRect(baseline, y_axis, font.charWidth(sms.charAt(sms.length() - 1)) + 2, font.getHeight());
sms.deleteCharAt(sms.length() - 1);
}
else {
baseline -= font.charWidth(sms.charAt(sms.length() - 1));
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
g.fillRect(baseline, y_axis, font.charWidth(sms.charAt(sms.length() - 1)) + 2, font.getHeight());
sms.deleteCharAt(sms.length() - 1);
}
flushGraphics();
}
public void redraw(char ch) {
Graphics g = getGraphics();
g.setColor(red, green, blue);
g.setFont(font);
g.drawChar(ch, baseline, line * 24, g.LEFT | g.BASELINE);
baseline += font.charWidth(ch);
if ( baseline > getWidth() - 30) {
width.append((char) baseline);
baseline = 10;
y_axis += 24;
line += 1;
}
flushGraphics();
}
public void reset() {
if ( width.length() > 0) width.delete(0, width.length() - 1);
line = 1;
baseline = 10;
y_axis = 12;
}
public void background() {
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
g.fillRect(0, 0, getWidth(), getHeight());
}
public void redrawAll() {
Graphics g = getGraphics();
g.setColor(back_red, back_green, back_blue);
g.fillRect(0, 0, getWidth(), getHeight());
reset();
for ( int a = 0 ; a < sms.length() ; a++)
redraw(sms.charAt(a));
}
public synchronized void keyPressed(int keyCode) {
time = System.currentTimeMillis();
if ( keyCode == -8) {
if ( sms.length() > 0) {
Unblink();
if ( baseline <= 10) {
System.out.println(baseline);
line -= 2;
baseline = (int) width.charAt(line);
line++;
y_axis -= 24;
}
deleteChar();
}
}
else if ( keyCode == 35) {
Unblink();
sms.append(" ");
baseline += white_space;
Blink();
}
else {
keypress = true;
last = MyCanvas.ch;
index = keyCode - KEY_NUM0 - 2;
if ( previndex == index) counter++;
else counter = 0;
if ( counter > 2 && index != 5 && index != 7) counter = 0;
if ( counter > 3) counter = 0;
MyCanvas.ch = keys[index].charAt(counter);
previndex = index;
callPaint(MyCanvas.ch);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?