2017-06-06 2 views
0

Mon programme se connecte à UNIX/PUTTY afin d'exécuter des commandes via une interface graphique personnalisée. J'ai un JTextArea comme OutputStream et un JTextField comme InputStream.Java JTextField en tant que InputStream. 'ENTER' ne fonctionne pas comme entrer

La sortie fonctionne comme prévu, mais le flux d'entrée ne fonctionne pas. Pour que la commande soit exécutée sous UNIX, il faut appuyer sur la touche ENTRÉE, mais la touche d'entrée ne fonctionne pas comme prévu.

Voici mon code:

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

Je suis en train de passer le « \ n » char comme le ENTRER, mais ne semble pas fonctionner. Il entre dans l'instruction if et réinitialisera le champ de texte à "". Mais '\ n' toBytes() ne semble pas être interprété par le flux d'entrée comme une entrée. Toute aide serait grandement appréciée. Thankyou :)

+2

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

Répondre

0

Le problème est avec JTextField car c'est une seule ligne que vous devez utiliser JTextArea dans votre cas.

+0

Didnt travail :(Avec TextField passe à la ligne suivante, cependant le flux d'entrée envoie toujours cela comme une touche Entrée à UNIX –