2012-05-24 59 views
1

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

... 
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应该是等待(键== KeyEvent.VK_ENTER)的方法,就像当你使用在C scanf或Java中的BufferedReader发生,它会等待你从键盘输入一个字符串,直到按下回车键。 编辑

我的应用程序来管理这样的

while(!finished) { 

    finished = processInput() 
} 

processInput管理中输入指定的程序指令。这就是为什么我不能从keyListener调用processInput() 我希望我很清楚,我的英语非常糟糕!

谢谢

+1

就叫'processInput(inputString);'当你按下回车键。 – nullpotent

回答

0

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

的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")) 
      ............ 
} 
0

我相信你被困在事件驱动接口的架构设计上。

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

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

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

相关问题