我正在制作一个自定义文本字段(绘制文本而不是使用JTextField)。我可以输入字符,但退格只清除一个字符。如果我再写一些东西,我可以再次删除一个字符。我不知道为什么。
KeyListener:
class KeyController implements KeyListener {
public void keyPressed(KeyEvent e) {
if (!chat.getUsing()) {
player.keyPressed(e);
} else if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
chat.keyTyped(e);
}
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
if (chat.getUsing()) {
chat.setUsing(false);
} else {
chat.setUsing(true);
}
}
}
public void keyReleased(KeyEvent e) {
if (!chat.getUsing()) {
player.keyReleased(e);
}
}
public void keyTyped(KeyEvent e) {
if (chat.getUsing() && e.getKeyCode() != KeyEvent.VK_BACK_SPACE) {
chat.keyTyped(e);
}
}
}
聊天对象中的keyTyped()方法:
public void keyTyped(KeyEvent ev) {
if (ev.getKeyCode() != KeyEvent.VK_BACK_SPACE) {
currentText += ev.getKeyChar();
} else {
if (currentText.length() > 0) {
currentText = currentText.substring(0, currentText.length() - 1);
}
}
}
我正在绘制当前的文本字符串。
试试这个
e.getKeyChar() != KeyEvent.VK_BACK_SPACE
代替
e.getKeyCode() != KeyEvent.VK_BACK_SPACE
在keyTyped()
方法中。
直接从KeyEvent
getKeyChar方法始终返回有效的Unicode字符或CHAR_UNDEFINED。字符输入由KEY_TYPED事件报告:KEY_PRESSED和KEY_RELEASED事件不一定与字符输入相关联。因此,getKeyChar方法的结果保证仅对KEY_TYPED事件有意义。
对于按键按下和按键释放事件,getKeyCode方法返回事件的keyCode。对于键入按键的事件,getKeyCode方法总是返回VK_UNDEFINED。getExtendedKeyCode方法也可以用于许多国际键盘布局。
欲了解更多信息,请阅读这里的关键事件。
问题内容: 一个人如何实现KeyListener,以便我可以创建一个两个人使用的系统,一个人使用“。” 和’/’来控制角色,并且其他人可以使用箭头键而不会彼此干扰?我现在所拥有的方式是,当一个人按住箭头键时,他们的角色会移动,但是当您使用另一个玩家的控件时,第一个人的角色就会停止。 问题答案: 创建一个标记当前按下/按下的键。 然后,在游戏循环中,您可以根据是否在地图中按下按键来移动对象。 例如:
问题内容: 我正在尝试制作一个仅接受数字的JSpinner,但我也希望它读取/响应退格键。 上面的代码仅能产生数字,但这不允许我退格。我在此站点上找到了一些示例,但它们是为C编写的。 问题答案: 您正确的实现不正确,您有实现用于过滤从keyboad 输入或从ClipBoard粘贴的un_wanted的工具,(感谢@StanislavL) 你有自己的问题与解决上包裹成, 例
问题内容: 我目前正在研究Java应用程序(基准),该应用程序旨在确保某些相对于数据库的进程。 我的应用程序应该运行以下内容: 我有多个要多次运行的用例(数据库中的简单插入,简单更新等)。运行之间的唯一区别是,同时运行的线程数。 我需要使用1、2、4、8、16等线程来整理这些用例,以便在我的测试中使用并发性(使用ExecutorService)。 我的问题 : 我的应用是否需要在每次运行前进行预热
我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。
问题内容: 我正在寻找有关如何捕获退格事件的解决方案,大多数堆栈溢出答案都在Objective-C中,但是我需要使用Swift语言。 首先,我为UITextField设置了委托,并将其设置为self 然后,我知道使用委托方法来检测是否按下了退格键,因为所有代码都在Objective- C中。我需要在Swift中使用以下方法。 问题答案: 斯威夫特4.2 较早的Swift版本
问题内容: 如何让我的自定义项侦听(或与此相关)+一个以上其他键的组合? 假设我要应用程序执行11种不同的操作,具体取决于所按下的键的组合。- 显然没有任何问题,但是对于(或“ ALT + 10”,它可以在帮助文件或类似文件中进行描述),我无法在网络上的任何地方(或脑海中)找到一个好的解决方案。我不相信这种带有计时器的解决方案是唯一可能的方法。 预先感谢一百万个任何建议! 编辑: 动作0-9 +动