0

LWJGL を介してテキスト入力を受け取るソリューションを探しています。LWJGL が提供する標準的なキーボード イベント入力の種類について言及しているわけではありません。AWT/Swing が提供する TextField のように、実際のテキスト入力行を受け取る機能を探しています。私は主に学習のためにこれを行っているため、LWJGL 以外のライブラリ (TWL など) を使用することに興味はありません。

現在、私は次のようなものを持っています:

    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);
        }
    }

ただし、シフトや上記の他の特別なコマンドを適切に処理することはできません。では、どうするのが一番良いのでしょうか?

4

2 に答える 2

2

NiftyGUIのソース コードのこのファイルを見てください。このファイルには、このテキスト処理コードが含まれているはずです。

于 2012-08-05T17:55:04.237 に答える
0

シフト処理行を削除して追加するだけです:

if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !Keyboard.isKeyDown(Keyboard.KEY_RSHIFT))
        shift=true;

While ループの開始前。

于 2015-03-23T19:59:13.713 に答える