Java 使用LWJGL进行文本输入
我正在寻找通过LWJGL接收文本输入的解决方案。我不是指LWJGL提供的标准键盘事件输入,我是在寻找接收实际文本输入行的能力,很像AWT/Swing提供的文本字段。我这样做主要是为了学习,因此,我对使用LWJGL之外的库(比如TWL)没有兴趣 目前,我有这样的想法:Java 使用LWJGL进行文本输入,java,text,lwjgl,textinput,Java,Text,Lwjgl,Textinput,我正在寻找通过LWJGL接收文本输入的解决方案。我不是指LWJGL提供的标准键盘事件输入,我是在寻找接收实际文本输入行的能力,很像AWT/Swing提供的文本字段。我这样做主要是为了学习,因此,我对使用LWJGL之外的库(比如TWL)没有兴趣 目前,我有这样的想法: private boolean shift = false; private void chatControls(float ticksPassed) { while (Keyboard.next()
private boolean shift = false;
private void chatControls(float ticksPassed) {
while (Keyboard.next()) {
if (Keyboard.isKeyDown(Keyboard.KEY_RETURN)) {
this.ui.toggleChat();
} else if (Keyboard.isKeyDown(Keyboard.KEY_DELETE)) {
this.chatText = "";
} else if (Keyboard.isKeyDown(Keyboard.KEY_BACK) && Keyboard.getEventKeyState()) {
try {
this.chatText = this.chatText.substring(0, chatText.length() - 1);
} catch (StringIndexOutOfBoundsException e) {}
} else if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) {
shift = Keyboard.getEventKeyState();
} else if (Keyboard.getEventKeyState() && !jtLetter) {
if (shift) {
this.chatText += Character.toUpperCase(Keyboard.getEventCharacter());
} else {
this.chatText += String.valueOf(Keyboard.getEventCharacter());
jtLetter = true;
}
} else {
jtLetter = false;
}
this.ui.updateChat(chatText);
}
}
但是,它无法正确处理shift或上述任何其他特殊命令。那么,最好的做法是什么呢?查看的源代码,其中应包含此文本处理代码。只需删除您的轮班处理行并添加:
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))
shift=true;
在While循环开始之前。非常感谢,它确实有一个相对简单的解决方案。这是给其他人看的。