【问题标题】:How to use a JTextPanel to get a string如何使用 JTextPanel 获取字符串
【发布时间】:2012-05-30 19:58:35
【问题描述】:

我需要使用 JtextPanel 从键盘获取输入,按 Enter 时将其保存在字符串中,然后使用该字符串根据输入中给出的行执行某些操作(例如“帮助”或“退出”)。我在 JTextPanel 的 KeyListener 中得到了这个:

...
public void keyPressed(KeyEvent e) {
     int key = e.getKeyCode();    

     if (key == KeyEvent.VK_ENTER) {
        inputString = textField.getText();
        textArea.append(inputString + "\n");
        textField.setText("");

        }
}
....

,但是我不能直接调用这个方法。我需要类似的东西

String input = processInput();
    if((input).equals("help"))
          ............
    else if ((input).equals("go"))
          ............

并且 processInput 应该是一个等待 (key== KeyEvent.VK_ENTER) 的方法,就像您使用 C 中的 scanf 或 java 中的 bufferedReader 时发生的那样,它会等待您从键盘输入一个字符串,直到您按下 Enter . 编辑

我的应用管理这样的命令

while(!finished) {

    finished = processInput() 
}

processInput 管理输入中给出的命令。这就是为什么我不能从 keyListener 调用 processInput() 我希望我很清楚,我的英语太糟糕了!

谢谢

【问题讨论】:

  • 按 Enter 键时只需拨打processInput(inputString);

标签: java input jtextfield bufferedreader keylistener


【解决方案1】:

我相信您一直停留在事件驱动界面的架构设计上。

这里的想法是您不要“等待”输入或其他任何东西。您设置界面,附加 KeyListener(您确实在某处有一个 addKeyListener(),对...),然后您就完成了。你放弃控制流,让你的主要方法结束,完成。

当用户做了一些值得注意的事情时,你会处理它,假设你有一个方法processText(String text),你会在你的keylistener中说processText(inputString);

因此,当用户输入某些内容并按 Enter 键时,它开始在 keyListener 中执行,该方法将控制流传递给 processText() 方法,该方法将根据该文本执行任何它应该执行的操作。

【讨论】:

    【解决方案2】:

    这个方法怎么样,很简单。

    键监听器:

    ...
    public void keyPressed(KeyEvent e) {
         int key = e.getKeyCode();    
    
         if (key == KeyEvent.VK_ENTER) {
            inputString = textField.getText();
            textArea.append(inputString + "\n");
            textField.setText("");
            processInput(inputString); //crunch it
            }
    }
    ....
    

    还有其他地方

    public void processInput(String input) {
        if((input).equals("help"))
              ............
        else if ((input).equals("go"))
              ............
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2019-03-10
      • 2013-03-30
      • 2014-07-08
      • 2017-05-27
      相关资源
      最近更新 更多