关于Frame加KeyListener的问题(急!!!!!)
如果code如下:
public class TsClose extends Frame{
public TsClose() {
super();
this.addKeyListener(new KeyListener()
{
public void keyPressed(KeyEvent e)
{
char inChar = e.getKeyChar();
System.exit(0);
}
public void keyReleased(KeyEvent e) // define the abstract method
{}
public void keyTyped(KeyEvent e)
{}
});
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args) {
TsClose tsClose1 = new TsClose();
tsClose1.show();
}
}
程序能工作正常,按键TsClose退出。
但是如果在TsClose里加一点东西,TsClose就对按键没反应了:
package com.sarsor.change;
import java.awt.*;
import java.awt.event.*;
public class TsClose extends Frame{
Can can = new Can("Welcome!");
Panel pan = new Panel();
public TsClose() {
super();
this.setSize(400,300);
pan.add(can);
add(pan);
pan.addKeyListener(new KeyListener()
{
public void keyPressed(KeyEvent e)
{
char inChar = e.getKeyChar();
can.setOut(inChar);
System.exit(0);
}
public void keyReleased(KeyEvent e) // define the abstract method
{}
public void keyTyped(KeyEvent e)
{}
});
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args) {
TsClose tsClose1 = new TsClose();
tsClose1.show();
}
}
class Can extends Canvas
{
String out;
public Can(String st)
{
this.setSize(200,200);
this.setBackground(Color.white);
out = st;
}
public void setOut(char ch)
{
char[] toShow = new char[1];
toShow[0] = ch;
out = new String(toShow,0,1);
repaint();
}
public void paint(Graphics g)
{
g.drawString(out,100,100);
}
}
怎么样才能使TsClose还是对按键有反应呢?
清帮帮我,我等着急用呢!??