现在文本框不能监听回车事件,希望大家帮我看看,给我改正一下!谢谢!
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.awt.event.KeyAdapter ;
import java.awt.event.KeyEvent ;
public class SendApplet extends Applet implements ActionListener//,KeyListener
{
private OutputStreamWriter osw;
private BufferedWriter bw;
private PrintWriter pw;
private InputStreamReader isr;
private BufferedReader br;
Panel panel=new Panel();
  Panel panel2=new Panel();
  TextField tf=new TextField("",30);
  Button btn=new Button("发送");
  TextArea ta=new TextArea(8,50);
Socket socket;
  BufferedReader in;
public SendApplet(){
Sock sockPara = new Sock();
socket = sockPara.socket;
   panel2.add(tf);
    panel2.add(btn);
    panel.setLayout(new BorderLayout());
    panel.add(panel2,BorderLayout.SOUTH);
    panel.add(ta,BorderLayout.CENTER);
btn.addActionListener(this);
add(panel);
this.setVisible(true);
try {
osw = new OutputStreamWriter(socket.getOutputStream());
bw = new BufferedWriter(osw);
pw = new PrintWriter(bw);isr = new InputStreamReader(socket.getInputStream());
br = new BufferedReader(isr); 
} catch (IOException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
    pw.println( tf.getText());
    pw.flush(); 
  ta.append(tf.getText());
  tf.setText("");
}
  ////////////////////文本框响应回车事件
tf.addKeyListener(new KeyAdapter() 
{
   public void keyPressed(KeyEvent e) 
   { 
   if (e.getKeyChar() == 13)//KeyEvent.VK_ENTER) //按键 执行相应操作;
   {   
   ta.append("\n\r"); 
   ta.append(tf.getText()); 
   tf.setText("");//记住该数据后,清空窗口
   }
   
   }
   });

如果能让消息发送后光标自动定位到空白的文本框也可以!

解决方案 »

  1.   

    tf.addKeyListener(new KeyAdapter()       错public abstract class KeyAdapter implements KeyListener这是抽象类,要么直接实现KeyListener不然就继承抽象类component.addKeyListener(new MyKeyListener());
        
        public class MyKeyListener extends KeyAdapter {
            public void keyPressed(KeyEvent evt) {
                // Check for key characters.
                if (evt.getKeyChar() == 'a') {
                    process(evt.getKeyChar());
                }
        
                // Check for key codes.
                if (evt.getKeyCode() == KeyEvent.VK_HOME) {
                    process(evt.getKeyCode());
                }
            }
        }光标自动定位到空白的文本框就是让文本框获得焦点
    Component initComp;
    initComp.requestFocus();
      

  2.   

    抱歉,搞错了KeyAdapter是可以这样用的e.getKeyCode()==10 或者 e.getKeyChar() == KeyEvent.VK_ENTER13!=KeyEvent.VK_ENTER
      

  3.   

    用这么麻烦吗?
    文本框直接加个 actionListiener 一样可以回车监听....
      

  4.   

    键绑定 不就行了啊
    getInputMap()
    getActionMap()