所以我很难过。出于某种原因,我似乎记得当您尝试向内容添加新行时,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" 不会创建换行符。
编辑(取两个):完整代码:
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();
}
}
编辑:基本上,我试图模仿 Google Wave 在用户按下 Enter 之前发送文本的能力。