だから私は困惑しています。なんらかの理由で、新しい行を追加しようとするとJavaが奇妙なことをすることを覚えているようです...だから、ここで問題になると思います。
このコードは、期待どおりに機能していません。
public void displayText(KeyEvent k){
txt = inputArea.getText();
outputArea.setText(txt);
if(k.getKeyCode() == 10) //return
outputArea.setText(txt + "\n");
}
getKeyCode() が正しい数値に設定されているかどうかを再確認できますが、その部分が正しいことはほぼ確実です。
編集:ありがとう; 私はそれらの定数を忘れていました...
残念ながら、それは機能しますが、実際には機能しません。if(k.getKeyCode() == k.VK_ENTER)
true (これは事実です) を返しますが、"\n" は改行を作成しません。
編集 (2 つ取る): 完全なコード:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame implements KeyListener{
private JFrame frame;
private JTextField inputArea;
private JTextArea outputArea;
private String txt;
public GUI(){
frame = new JFrame("My Frame");
inputArea = new JTextField(1);
outputArea = new JTextArea(5,10);
inputArea.addKeyListener(this);
outputArea.setLineWrap(true);
txt = "";
frame.setLayout(new GridLayout(2,10));
frame.add(inputArea);
frame.add(outputArea);
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void keyPressed(KeyEvent k){}
public void keyTyped(KeyEvent k){}
public void keyReleased(KeyEvent k) {
displayText(k);
}
public void displayText(KeyEvent k){
txt = inputArea.getText();
outputArea.setText(txt);
if(k.getKeyCode() == KeyEvent.VK_ENTER)
outputArea.append("\n");
//outputArea.setText(txt + "\n");
}
}
次に、メインの別のクラス:
public class Driver {
public static void main(String[] args){
GUI gui = new GUI();
}
}
編集: 基本的に、ユーザーが Enter キーを押す前にテキストを送信する Google Wave の機能をエミュレートしようとしています。