如何使用JTextPane获取字符串

时间:2012-05-24 08:44:06

标签: java input jtextfield bufferedreader keylistener

我需要使用JtextPanel从键盘获取输入,当我按Enter键时将其保存在字符串上,然后使用该字符串根据输入中给出的行执行某些操作(例如“help”或“quit”)。我在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时一样,它会等你从键盘输入一个字符串直到你输入。 修改

我的应用管理这样的命令

while(!finished) {

    finished = processInput() 
}

processInput管理输入中给出的命令。这就是我无法从keyListener调用processInput()的原因 我希望我很清楚,我的英语太糟糕了!

感谢

2 个答案:

答案 0 :(得分:0)

我相信你会坚持使用事件驱动界面的架构设计。

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

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

因此,当用户输入某些东西并点击进入时,它会在keyListener中开始执行,keyListener将控制流传递给processText()方法,该方法会因为该文本而执行任何操作。

答案 1 :(得分: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"))
          ............
}