当前位置: 首页 > 面试题库 >

libgdx的文本字段中的特殊字符不起作用

翟善
2023-03-14
问题内容

我可以使用setText(“åäö”),但是如果我没有在键盘上键入内容,这也不起作用

            public void keyTyped(TextField textField, char key) {
                JOptionPane.showMessageDialog(new JFrame(), key);
            }

奇怪的是,它在Mac上不起作用,但在Windows上却起作用,有人对此有答案吗?谢谢!

这是另一个主题相似的问题!

如何从Libgdx中的特殊字符获取输入?

我试图获得ascii值并将其通过

Gdx.input.isKeyPressed(ascii value);

但这不起作用。我将项目编码设置为UTF-8,并且可以打印åäö等特殊字符。

编辑:我尝试了

Gdx.input.setInputProcessor(new InputProcessor() {

        @Override
        public boolean keyDown(int keycode) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean keyUp(int keycode) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean keyTyped(char character) {
            System.out.println(character);
            return false;
        }

        @Override
        public boolean touchDown(int screenX, int screenY, int pointer, int button) {
            return false;
        }

        @Override
        public boolean touchUp(int screenX, int screenY, int pointer, int button) {
            return false;
        }

        @Override
        public boolean touchDragged(int screenX, int screenY, int pointer) {
            return false;
        }

        @Override
        public boolean mouseMoved(int screenX, int screenY) {
            return false;
        }

        @Override
        public boolean scrolled(int amount) {
            return false;
        }

    });

没有打印åäö


问题答案:

更新

看来,这与OSX上lwjgl中的Unicode字符错误有关: [已修复]
Unicode输入

如果您更新到最新的lwjgl库2.9.1,则应解决此问题。从变更日志:

2013-10-13 kappaOne

  • … / org / lwjgl / opengl / MacOSXNativeKeyboard.java,src / native /
    macosx / org_lwjgl_opengl_Display.m:修复键盘键码以返回Unicode字符而不是ASCII字符


请参阅:2.9.1-changelog.txt

原始答案

如何从Libgdx中的特殊字符获取输入?

您可以实现com.badlogic.gdx.InputProcessor接口,并通过调用设置当前输入处理器
Gdx.input.setInputProcessor(inputProcessor );

然后,您应该能够在InputProcessor#keyTyped(char c)方法中接收有关所有键入字符(无论是否特殊)的通知。

实际上,这或多或少是TextField类所做的(不完全是,它通过扩展com.badlogic.gdx.scenes.scene2d.InputListener来监听输入)。

我快速浏览了TextFields keyTyped方法的相关源代码:

[...]
if (font.containsCharacter(character)) {
   // here the character gets added to the text field
}
[...]

因此,似乎文本字段的字体必须支持字符,否则它将不会显示。我没有Mac可以对此进行测试,但是我想,您的Mac默认使用的BitmapFont不支持特殊字符。尝试为TextField设置一个不同的BitmapFont(请参见TextField.setStyle(TextFieldStyle样式)),看看是否可以解决问题。



 类似资料:
  • 问题内容: 我们需要从Typescript中的node.js代码中调用REST API,并希望具有用于请求和响应的相应类型。不幸的是,给定接口的JSON包含以下字段: 我们被告知,这是由于另一端的自动化“ JSONifier”的局限性而无法更改的。我们如何设置适合于此的接口?以下显然不起作用: 问题答案: 就像JS对象一样,您可以用引号将名称引起来,如下所示:

  • 问题内容: 我试图编写一个文件名带有特殊字符的文件,例如“téééê.mp3”,但文件名始终保留“?” 我尝试了几种方法来代替字符“é”,但没有找到解决方法: 我也尝试过这种方式。 问题答案: 尝试: 现在,如果这是您的文件系统不支持此类文件名的问题,您将得到一个;。不同于,新的API拒绝创建可能最终无法读取的文件名。 如果确实无法创建路径,那么,您将必须找到某种逃避和撤消逃避的方法。也许写一个别

  • 我想检查一个字符串是否包含特殊字符,比如!@#$%^&*.,<>/\'“;:?如果字符串至少包含其中一个字符,则返回true。 我尝试使用以下regex脚本:

  • 我有一个从xml文档中读取数据的程序。在这个xml文档中,一些属性包含特殊字符,如“\n”、“t”等。 有没有一种简单的方法可以将所有这些字符串替换为实际的字符,或者我必须像下面的例子一样为每个字符手动替换? 手动示例: 编辑: 我正在寻找某种方法来处理字符串,就像这样的转义字符串(尽管我知道这是行不通的)

  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy

  • 一些字符在 XML 中有特殊的含义,只能够通过其实体名称输入 字符 写法 缩写涵义 < &lt; less than > &gt; greater than & &amp; ampersand " &quot; quote ' &apos; apostrophe 空格 &nbsp; none-break space 通常需要使用实体输入的字符包括<、&、空格   XML 会将任意数量的空格解析为一