【问题标题】:Java - Libgdx : Check user's input in a textfield?Java - Libgdx:检查用户在文本字段中的输入?
【发布时间】:2016-10-09 21:45:57
【问题描述】:

我的 if..else 语句:

if(réponse.getText().equals("")){
            réponse.setText("");
        } else if(réponse.getText().equals("riviere")){
            game.setScreen(new Stage1(game));
            music.stop();
        }
        else if(!réponse.getText().equals("riviere")){
            ecrireLeTexte = true;
        }

我创建了一个文本字段,然后立即检查其中的内容,但我担心用户在文本字段检查之前无法输入任何内容...

那么如何在用户输入后检查用户的输入呢?

【问题讨论】:

  • 我不完全确定你在问什么,所以澄清一点可能是个好主意。但是,你的代码也有点草率:为什么你有第一个if 语句?这是相当多余的。您可以简单地删除它并将您的else if 变成第一个if。此外,字符串是一种非常脆弱的方法来确定用户的选择,因为它们很容易拼错单词等。至少您可以先将response 字符串小写,这样可以进行更可靠的比较,但仍然是很难推荐。
  • 很不清楚你在问什么。此外,您似乎已经掌握了您能想到的每个标签,无论它们与问题的相关性。

标签: java if-statement input libgdx textfield


【解决方案1】:

您可以将检查放入您的渲染方法中,以便每帧调用它或将 TextFieldListener 设置为您的 TextField 以侦听更改。

réponse.setTextFieldListener(new TextField.TextFieldListener() {
    @Override
    public void keyTyped(TextField textField, char c) {
        //Here you can compare the text
    }
});

还记得将您的 Stage 设置为 InputProcessor fe。 Gdx.input.setInputProcessor(stage);

【讨论】:

  • 我不想得到一个字符但我是字符串,我该怎么办?
  • 如果你想获取整个文本,你应该在监听器中使用textField.getText()。但是,如果您只想将 char c 转换为字符串,则可以使用 String.valueOf(c)
  • 感谢您的快速回答,但我没听明白,您能在下面的代码中显示我吗?
  • réponse.setTextFieldListener(new TextField.TextFieldListener() { @Override public void keyTyped(TextField textField, char c) { if(réponse.getText().equals("vie")){ System. out.println("okok"); game.setScreen(new BienOuej(game)); music.stop(); } else if(!réponse.getText().equals("vie")) { game.setScreen(new Druide2(game)); music.stop(); } } });
  • 如果是:textField.getText();在侦听器内部,它只返回 1 个字符而不是完整的字符串“vie”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多