//该程序实现按下向下键,输出up字符串;
//问题:该窗体已有,但在eclipse中运行,只出现窗体,不能打印up。;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowEvent.*;
public class TestKeyEvent{
public static void main(String[] args)
{MyTestKeyEventFrame l=new MyTestKeyEventFrame();
MyWindowAdapter windowadapter=new MyWindowAdapter();
l.launchFrame();
l. addWindowListener(windowadapter);
}
}
class MyTestKeyEventFrame extends Frame
{public void launchFrame()
{setSize(100,100);
setLocation(200,200);
addKeyListener(new MyKeyMonitor());
setVisible(true);
}class MyKeyMonitor extends KeyAdapter
{public void keypressed(KeyEvent e)
{ int keyCode=e.getKeyCode();
if (keyCode==KeyEvent.VK_UP)
System.out.println("up!");}}
}
class MyWindowAdapter extends WindowAdapter
{public void windowClosing(WindowEvent e)
{System.exit(0);}}
//问题:该窗体已有,但在eclipse中运行,只出现窗体,不能打印up。;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowEvent.*;
public class TestKeyEvent{
public static void main(String[] args)
{MyTestKeyEventFrame l=new MyTestKeyEventFrame();
MyWindowAdapter windowadapter=new MyWindowAdapter();
l.launchFrame();
l. addWindowListener(windowadapter);
}
}
class MyTestKeyEventFrame extends Frame
{public void launchFrame()
{setSize(100,100);
setLocation(200,200);
addKeyListener(new MyKeyMonitor());
setVisible(true);
}class MyKeyMonitor extends KeyAdapter
{public void keypressed(KeyEvent e)
{ int keyCode=e.getKeyCode();
if (keyCode==KeyEvent.VK_UP)
System.out.println("up!");}}
}
class MyWindowAdapter extends WindowAdapter
{public void windowClosing(WindowEvent e)
{System.exit(0);}}
class MyKeyMonitor extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_UP)
System.out.println("up!");
}
}
用适配器和用接口的区别就在这里。
用适配器比较简单,用哪个方法重写哪个方法就行了。但是方法名写错了你自己也不知道。
用接口的话,就算是不想重写的方法,也必须写出来。
@Override用这个注释,可以帮你检查这种错误。