一个窗口包含文本行和标签,在文本行中输入一段文字兵按回车键后,这段文字将显示在标签上。
我这个错在哪里?
package C;
import java.awt.*;
import java.awt.event.*;
public class KeyEvent extends Frame implements KeyListener
{
static KeyEvent frm = new KeyEvent();
static TextField tf;
static Label l;
public static void main(String args[])
{
frm.setTitle("习题3");
frm.setSize(250, 150);
frm.setLayout(new FlowLayout());
tf = new TextField(20);
l= new Label();
tf.addKeyListener(frm);
frm.add(tf);
frm.add(l);
frm.setVisible(true);
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
l.setText(tf.getText());
}
}
}
您的程序存在两个大问题和一个小问题:
第一个大问题是您的class名称定为KeyEvent,与Java本身所有的java.awt.event.KeyEvent冲突。如果非要如此命名也不是不可以,但是您的keyPressed程序段又确实用到了java.awt.event的KeyEvent,所以程序无法编译。比较干净的解决方法是更改您的class名称,如果实在想保留KeyEvent为您的class名称,那么在用到java.awt.event的KeyEvent的时候需要加全名:
public void keyPressed(java.awt.event.KeyEvent e)
{
if(e.getKeyCode()==java.awt.event.KeyEvent.VK_ENTER)
{
l.setText(tf.getText());
}
}
第二个大问题是您的KeyEvent定义implements KeyListener,那么除了keyPressed之外,您还必须有keyReleased 和keyTyped 的定义:
public void keyReleased(java.awt.event.KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(java.awt.event.KeyEvent arg0) {
// TODO Auto-generated method stub
}
一个小问题是您没有加WindowListener,所以窗口显示之后不能关掉(只能从IDE或是command line退出)。建议您加上以下代码:
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息