【问题标题】:JFrame Keylistener is taking inputs from userJFrame Keylistener 正在接受用户的输入
【发布时间】:2020-01-10 12:23:34
【问题描述】:

我已将KeyListener 添加到JFrame

String1:编码 显示:_ _ d _ n g

如果我按 c 它应该填补空白,否则它应该在我按另一个键时等待。

我只需要给用户 4 次机会。

我已经在控制台中构建了这个,但在控制台中我可以在循环中添加扫描仪。

如何在JFrame 中做到这一点?

JTextField textField = new JTextField();
    JLabel keylabel = new JLabel("Press any key");

    @Override
    public void keyPressed(KeyEvent e) {
         int keycode = e.getKeyCode();
         if(keycode == KeyEvent.VK_C)
             keylabel.setText("You pressed correct");
         else
             keylabel.setText("You pressed wrong");

    }

我使用的上述代码我不知道如何为所有空白重复该代码。

【问题讨论】:

  • 在 UI 中,您始终处于循环中。所以你可以简单地在你的类中创建一个int 字段并在用户按下一个键时增加它。
  • 您好,请检查我刚刚更新的问题
  • @SergiyMedvynskyy

标签: java swing jframe keylistener


【解决方案1】:

我会提出这样的建议:

JTextField textField = new JTextField();
JLabel keylabel = new JLabel("Press any key");
private int tries = 10;

@Override
public void keyPressed(KeyEvent e) {
     keylabel.setText("You pressed " + (e.getKeyCode() == KeyEvent.VK_C ? "correct" : "wrong"));
     if (--tries <= 0) {
         keylabel.setText("No tries left");
         textField.setEnabled(false);
     }
}

【讨论】:

  • 有3个空格我应该重复三次代码吗?
  • 使用 ||操作员。 if(keycode == KeyEvent.VK_C || keyCode == KeyEvent.VK_B) 等等。或者,您可以使用允许的字符定义一个 HashSet 并检查该集合是否包含用户输入的字符。
猜你喜欢
  • 2019-01-21
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多