我正在尝试识别按下了哪个键并按要求执行操作。基本上使用它们在按下“i”n“o”时进行放大n缩小。
我使用过这些方法:
protected boolean keyDown(int keycode, int time)
{
int key=Keypad.key(keycode);
String keyC=Integer.toString(key);
System.out.println("********************************* key pressed"+key);
System.out.println("********************************* key pressed to string"+keyC);
return super.keyDown(keycode, time);
}
public boolean keyChar(char key, int status, int time)
{
System.out.println("inside keychar");
boolean retval = false;
int zoom=mapField.mf.getZoom();
if(key== 'o'||key== 'O')
{
zoom=zoom-3;
mapField.mf.setZoom(zoom);
retval = true;
}
super.mf.setZoom(zoom);
return retval;
}
这些方法似乎根本不起作用。
答案 0 :(得分:0)
好的,让我告诉你我将如何做到这一点,并希望在某个地方会有一个aha时刻。
import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.Keypad;
// any other imports you might need
public final class VivartClass implements KeyListener {
public boolean keyChar(char key, int status, int time)
{
System.out.println("inside keychar");
if(key== 'o'||key== 'O')
{
int zoom=mapField.mf.getZoom();
zoom=zoom-3;
mapField.mf.setZoom(zoom);
super.mf.setZoom(zoom);
return true;
}
return super.keyChar(key, status, time);
}
protected boolean keyDown(int keycode, int time) {
int key=Keypad.key(keycode);
String keyC=Integer.toString(key);
System.out.println("********************************* key pressed"+key);
System.out.println("********************************* key pressed to string"+keyC);
return super.keyDown(keycode, time);
}
}
然后在您的应用程序构造函数
中 public Application() {
addKeyListener(new VivartClass());
// all your other stuff you may want to do
}
“应该使用keyChar通知来确定用户按下哪些字符”是www.blackberry.com在其API中的推荐。
另外,请确保代码中的其他位置没有其他keyChar方法。如果有,那么你期望被调用的那个就不会被调用。
而不是键=='o'尝试使用net.rim.device.api.system.Characters中的一些值来查看是否有可以获取的某些键,例如
key == Characters.LATIN_SMALL_LETTER_O
哦,最后一次尝试。你可以看看是否
Keypad.getAltedChar(key) == 'o'
也改善了你的状况。
抱歉,我现在面前既没有模拟器也没有设备,所以我不能和你一起运行这些设备,但希望我能解决其中一个问题。