最近学到awt的事件了,学KeyEvent可以用KeyAdapter的时候看到书里面的例子,结果和我猜到的不太一样代码是这样的
import java.awt.*;执行之后的截图是这样的
import java.awt.event.*;
public class app18_8{
static Frame frm = new Frame ();
static TextField txf = new TextField (18);
static TextArea txa = new TextArea("",4,19,TextArea.SCROLLBARS_NONE);
public static void main (String args[]){
frm.setSize(200,150);
frm.setTitle("Key Event");
frm.setLayout(new FlowLayout(FlowLayout.CENTER));
txf.addKeyListener(new KeyLis());
txa.setEditable(false);
frm.add(txf);
frm.add(txa);
frm.setVisible(true);
}
static class KeyLis extends KeyAdapter{
public void keyPressed(KeyEvent e){
txa.setText("");
if(e.isActionKey())
txa.append("Action key is pressed\n");
else
txa.append(e.getKeyChar()+" is pressed\n");
}
}
}
图上面显示a is pressed s ispressed可是keyPressed()方法里的第一行不是清空TextArea里面的内容吗?应该只能有一行被显示出来啊,现在的结果是TextArea中的内容显示两行之后再清空,不科学?
------解决思路----------------------
.............刚试了一下
在Eclipse和MyEclipse中
在Eclipse中是你那个样子的, (我没截图,就不再打开了)
在MyEclipse中,是这样的