canvas汉字输入类库
来源:互联网 发布:本地网络出现波动 编辑:程序博客网 时间:2024/05/22 18:22
和J2ME认识快2年了,觉得大多时间都没在J2ME上。我是个本科学生,平时喜欢没事无聊写程序玩,不在乎做出的游戏有啥好玩的,就是想享受写程序的乐趣,学点新东西。
大二我们班组了个创新团队,做的手机游戏对战平台在东软杯上还拿了奖。挺开心
在做游戏过程中,我发现每当要输入字符,界面就会跳转到系统给的输入框里来(在模拟器上能直接输),后来用canvas做游戏时,发现不能插入输入框。于是我就想写个输入法,能在canvas上直接输入字符。这样只要在canvas上按一堆数字键就能输出字符了。
我把这个汉字输入法连同一个" Java手机日记本"上交学院参加院庆杯,很失望,连个鼓励都没有。。。。。
现在分享给大家,希望大家能有用的上的。对输入法有建议,请跟贴告诉我,谢谢!!!
主要API介绍
1、util.hzpy.HanziInput
汉字拼音输入法类,通过这个类能够识别键盘输入,获取用户需要的汉字。
void back()
退格
char getCurrent_hanzi()
获得当前选中的汉字
java.lang.StringBuffer getCurrent_pinyin()
返回当前拼音序列
char[] getHanziSequence()
获得当前汉字序列
int getInput_state()
获得当前输入法的状态,用来判断是否可以输出
tatic HanziInput getInstance()
获得拼音输入法的实例
java.lang.StringBuffer getPinyinSequence()
获得当前拼音序列
void init()
初始化输入法
void nextKeycode(int keycode)
加入一个新的按键消息
void updateView(javax.microedition.lcdui.Graphics graphics, int width, int height, javax.microedition.lcdui.Font font)
更新输入法画面,在屏幕底部显示输入法内容
2、util.hzpy.HanyuPinyin
汉字字库,每组汉字由对应的汉语拼音索引
static char[] getHanziSequence(java.lang.StringBuffer pinyin)
根据拼音获取汉字序列
四、输入法应用示例
/*
* EditCanvas.java
* 汉字编辑
*
* Created on 2007年6月9日, 下午5:30
*
*/
package src;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import util.hzpy.HanziInput;
/**
*
* @version 1.0
* @author 碳酸钙
*/
public class EditCanvas extends Canvas{
//输入法
HanziInput input;
//显示
Font font;
int width,height;
//文本
StringBuffer text;
public EditCanvas() {
width= getWidth();
height = getHeight();
//获得输入法
input = HanziInput.getInstance();
text = new StringBuffer();
//绘制
font= Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_LARGE);
}
protected void paint(Graphics graphics) {
/*设置输入法绘画区域*/
graphics.setClip(0,0,
width,height);
graphics.setColor(0xffffff);
//清屏
graphics.fillRect(0,
0,
width,height);
graphics.setColor(0);
if(text != null && text.length() > 0){
int width_per_char = font.charWidth('爱');//设置汉字的宽
int len_per_line = width/width_per_char;
int offset = 0;
int length = len_per_line;
int height_of_text_write = 0;
char[] hanzis = new char[text.length()];
text.getChars(0,text.length(),hanzis,0);
if(length > hanzis.length) length = hanzis.length;
while(offset <= text.length() ){
//挨个输出text里的汉字
graphics.drawChars(hanzis,
offset,length,
0,height_of_text_write,
Graphics.TOP|Graphics.LEFT);
offset += len_per_line;
height_of_text_write += font.getHeight();
if(offset+len_per_line > text.length())length = text.length() - offset;
else length = len_per_line;
}
}
//绘制输入法界面
if(input.getInput_state() > 2){
//有输入法有更新
input.updateView(graphics,width,height,font);
}
}
public void keyPressed(int keycode){
System.out.println("keycode=" + keycode);
if(keycode == -5 || keycode == 48){ //确定
if(input.getInput_state() > 1){
//获得输入法中的选中的汉字
text.append(input.getCurrent_hanzi());
//重置输入法
input.init();
}
}else{
input.nextKeycode(keycode);
}
repaint();
}
//退格
public void back() {
if(input.getInput_state() > 1){
input.back();
repaint();
}else{
if(text.length() > 0)
text.setLength(text.length()-1);
repaint();
}
}
}
汉字输入类库
下载信息 [点击浏览该文件:] | [快车下载]
演示程序
下载信息 [点击浏览该文件:] | [快车下载]
类库源代码
- canvas汉字输入类库
- 悬而未决的问题:如何在Canvas上获得汉字输入
- textbox屏蔽汉字输入
- word不支持汉字输入--解决方案
- 关于汉字输入联想
- 控制输入框的汉字输入
- Canvas类
- c语言输入系统 -- 全拼汉字输入
- Qt 从LineEdit中获得中文汉字输入.
- 解决mathtype中汉字输入不全的方法
- python的汉字输入问题 以及比较
- IOS textfield 限制汉字输入的方法
- iOS检查汉字输入的方法集
- Linux的centos6.5版本的汉字输入
- tk库canvas方法
- Canvas类的应用
- 关于J2ME Canvas类
- j2me Canvas类详解
- Ajax - JavaScript之通过prototype属性建立面向对象的JavaScript
- 判断字节的升序存储还是降序存储(little-endian or big-endian)
- 中华人民共和国企业所得税法
- 读取网络图片
- 囧嘛...最近的生活真是懒散啊.........
- canvas汉字输入类库
- 统计给定一个整数以二进制表达时含有1的个数
- 如何在Web页面上直接打开、编辑、创建Office文档
- 在Csdn开博了!
- 我在考研
- 发MOSS2007的WebPart全过程
- 发布VS.Net2005开发的WebPart需注意的问题
- 利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法(一)
- 关于webpart通信