Java 如何使用JTextPanel获取字符串

Java 如何使用JTextPanel获取字符串,java,input,jtextfield,bufferedreader,keylistener,Java,Input,Jtextfield,Bufferedreader,Keylistener,我需要使用JtextPanel从键盘获取输入,按下enter键时将其保存在字符串中,然后使用该字符串根据输入中给出的行执行一些操作(例如“帮助”或“退出”)。我在JTextPanel的KeyListener中得到了这个: ... public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { inputString = tex

我需要使用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() 我希望我是清楚的,我的英语很差


谢谢

我相信您已经被事件驱动界面的体系结构设计吸引住了

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

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


因此,当用户输入某个内容并点击enter键时,它开始在keyListener中执行,它将控制流传递到
processText()
方法,该方法将执行由于该文本而应该执行的任何操作。

这种方法如何,非常简单

KeyListener:

...
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"))
          ............
}
只需调用
processInput(inputString)当您按Enter键时。