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 + -
显示快捷键?