首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

J2ME: 由用户自行设立键值

2012-09-10 
J2ME: 由用户自行设置键值众所周知,j2me的手机键值的处理是令人头痛的一件事,要使一个j2me应用适配所有的

J2ME: 由用户自行设置键值
众所周知,j2me的手机键值的处理是令人头痛的一件事,要使一个j2me应用适配所有的手机键盘简直是不可能完成的任务,要达到这个目的,唯一的途径是由用户自行设置键值。
以下提供一个用户设置键值的类,经测试效果不错。

public class GetKey extends Canvas{private int fh;private int lastKey = 0;private Display display;private Displayable backScreen;private TextField setKey;public GetKey(TextField theSetKey){fh = Font.getDefaultFont().getHeight() + 4;setKey = theSetKey;lastKey = Integer.parseInt(setKey.getString());}public void show(Display theDisplay){display = theDisplay;backScreen = display.getCurrent();display.setCurrent(this);}protected void paint(Graphics g) {g.setColor(0);g.fillRect(0, 0, getWidth(), getHeight());g.setColor(0xffffff);g.drawString("Press the key:", 2, fh*0, Graphics.TOP|Graphics.LEFT);g.drawString("press < to cancel,", 2, fh*1, Graphics.TOP|Graphics.LEFT);g.drawString("press > to save.", 2, fh*2, Graphics.TOP|Graphics.LEFT);g.setColor(0xff0000);g.drawString(String.valueOf(lastKey), getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.TOP);}// 响应按键protected void keyPressed(int keyCode) {if (keyCode <= 0) {int gameAction = getGameAction(keyCode);if (gameAction != 0) {keyCode = gameAction;}}switch(keyCode){case Canvas.RIGHT:setKey.setString(String.valueOf(lastKey));case Canvas.LEFT:display.setCurrent(backScreen);return;default:lastKey = keyCode;}repaint();serviceRepaints();}}


注意其中的关键是要在构建函数中传入用于保存用户所设按键的TextField!

更正:应设为全屏,否则有一些键可能读不到! 对不起,这里不负责修理手机   是键位不对. 不是我手机坏了 public void commandAction(Command cmd, Item item) {if(item == uiMenuKey){GetKey keyCanvas = new GetKey((TextField)item);keyCanvas.show(controler.getDisplay());}}

热点排行