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

 ytm5295526049760 发布于 2023-01-30 18:06

我可以使用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;
        }

    });

没有打印åäö

1 个回答
  • UPDATE

    看来,这与OSX上的lwjgl中的unicode字符错误有关: [FIXED] 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样式)),看看这是否解决了问题.

    2023-01-30 18:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有