2017-06-06 45 views
0

我的程序连接到UNIX/PUTTY以通过自定义GUI执行命令。我有一个JTextArea作为我的OutputStream和一个JTextField作为我的InputStream。Java JTextField作为InputStream。输入'ENTER'不起作用

输出按预期运行,但输入流不是。为了在UNIX内执行该命令,它需要按下ENTER键,但是回车键并未按预期运行。

这里是我的代码:

public class JTextFieldInputStream extends InputStream { 
byte[] contents; 
int pointer = 0; 
String toBytes = ""; 
public JTextFieldInputStream(final JTextField text) { 

    text.addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyReleased(KeyEvent e) { 
      if(e.getKeyChar()=='\n'){ 
       toBytes = text.getText()+'\n'; 
       contents = toBytes.getBytes(); 
       pointer = 0; 
       text.setText(""); 
       toBytes = ""; 
      } 
      super.keyReleased(e); 
     } 
    }); 
} 

@Override 
public int read() throws IOException { 
    if(pointer >= contents.length) return -1; 
    return this.contents[pointer++]; 
} 

我试图通过“\ n”字符作为进入,但似乎并不奏效。它进入if语句并将文本字段重置为“”。但'\ n'toBytes()似乎不被输入流解释为输入按。 任何帮助将不胜感激。谢谢:)

+2

https://stackoverflow.com/questions/16378888/how-to-get-a-jtextfield-to-respond-to-the-enter-key – Reimeus

回答

0

问题是与JTextField,因为它是一个单行只有你需要使用JTextArea你的情况。

+0

没有工作:(随着TextField移动到下一行,但是输入流仍然会将其作为Enter输入到UNIX –