2017-06-06 11 views
0

私のプログラムは、カスタムGUIでコマンドを実行するためにUNIX/PUTTYに接続します。私は、私のOutputStreamとしてJTextAreaを、InputStreamとしてJTextFieldを持っています。Java JTextFieldをInputStreamとして使用します。 'ENTER'が入力として機能しない

出力は期待どおり機能していますが、入力ストリームは機能していません。 UNIX内でコマンドを実行するには、ENTERキーを押す必要がありますが、Enterキーは期待通りに機能していません。私が入ると「\ n」の文字をパスしようとしていますが、動作していないようです

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++]; 
} 

は、ここに私のコードです。それはifステートメントに入り、テキストフィールドを ""にリセットします。しかし、 '\ n' toBytes()は、入力ストリームによって入力エンティティとして解釈されないようです。 ご協力いただければ幸いです。ありがとうございました:)

+2

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

答えて

0

問題は、JTextAreaを使用する必要がある場合に限り、JTextFieldが1行であるためです。

+0

Didnt work :(TextFieldを使用して次の行に移動し、しかし、入力ストリームは依然としてEnter pressとしてUNIXに送信します –

関連する問題