2012-03-16 39 views
3

我該程序經由telnet或SSH連接到遠程服務器的工作(用戶可以選擇其連接型),以及在控制檯上正在顯示的輸出(默認System.out)。獲得多輸出串試圖從JTextField中複製到控制檯

我寫代碼寫出來,希望無論是被到控制檯上寫的JTextField

接下來我想做的是讓用戶通過JTextArea也可以輸入自己的命令,只要按下回車鍵,他們輸入的代碼就會被髮送出去。

對於我自己調試的目的我想打印到控制檯的用戶輸入第一隻是爲了確保我發送正確的數據。

我這裏有這個小的代碼片斷..

// jtxt is a JTextField i defined earler in code 
// and the variable J is a String. 

jtxt.addKeyListener(new KeyAdapter() { 
    public void keyTyped(KeyEvent ke) { 
     if (ke.getKeyChar() == ke.VK_ENTER) { 

      j = jtxt.getText(); 
      System.out.println(j); 
     } 
    } 
}); 

我遇到的唯一的問題是,我測試了這一點我自己和我的JTextArea有文字「管理員」,讓string j = "admin"但whenver我打印出來在屏幕上,它會打印出像「admin」這樣的單詞。有任何想法嗎?順便說一句,即使在addKeyListener附近也沒有循環。

+1

這個問題(或非常相似的一個至少)最近被問,並回答了在這裏:[數據顯示上一個JTextArea,而不是控制檯(http://stackoverflow.com/questions/9680318/show-data-上-A-的JTextArea-代替-的控制檯/ 9680496#9680496)。 – aioobe 2012-03-16 14:36:34

+2

調試器是你最好的朋友!在你的println上放一個斷點並檢查我們發生了什麼 - 有一件事是肯定的,代碼總是(或者最通常)是正確的。 – 2012-03-16 14:38:57

+3

1)[添加一個動作偵聽器(http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html#addActionListener%28java.awt.event.ActionListener%29),而不是這是一個'KeyListener'。 2)你確定*「一百萬」*實際上不是5嗎? 3)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-03-16 14:40:17

回答

0

的問題是,用戶按住太久回車鍵。您的計算機正在重新檢查keyTyped(),而當前按鍵仍在進行中。將方法名稱從keyTyped更改爲keyReleased。這應該可以解決你的錯誤。