javaswing绑定键盘事件窗口按下z键出现一个按钮为什么事件绑定不上
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class PlaneAndBullet implements Runnable{
public static void main(String[] args) {
new PlaneAndBullet().MyJFrame();
}
JButton jbt;
JButton jbt2;
void MyJFrame(){
JFrame jf=new JFrame("打飞机");
jf.setLayout(null);
BackGround backGround=new BackGround();
jf.setSize(500,300);
jf.setLocationRelativeTo(null);
ImageIcon imageIcon=new ImageIcon("fj.jpg");
jbt=new JButton(imageIcon);
jbt.setBounds(200,200,50,30);
jf.add(jbt);
int jbt_x=jbt.getX();
int jbt_y=jbt.getY();
jbt.setEnabled(true);
System.out.println(1);
jbt.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println(2);
int jbt_x=jbt.getX();
if(e.getKeyChar()=='a'){
System.out.println(3);
run();
}
}
});
System.out.println(5);
JButton jbt3=new JButton("飞机");
jbt3.setBounds(20,20,40,20);
jf.add(jbt3);
jf.requestFocus();
System.out.println(2000);
jf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
System.out.println(90);
if(e.getKeyChar()=='z'){
jbt2=new JButton("子弹");
jbt2.setBounds(200,20,25,15);
jf.add(jbt2);
jf.repaint();
System.out.println(900000);
}
}
});
backGround.setBounds(0,0,500,300);
jf.add(backGround);
backGround.setPreferredSize(new Dimension(200,200));
/*ImageIcon imageIcon2=new ImageIcon("bj.jpg");
JLabel imgLabel=new JLabel(imageIcon2);
jf.getLayeredPane().add(imgLabel,new Integer(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,imageIcon2.getIconWidth(),imageIcon2.getIconHeight());
JPanel jPanel=(JPanel)jf.getContentPane();
jPanel.setOpaque(false);*/
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public void run(){
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(4);
System.out.println(jbt);
jbt.setLocation(jbt.getX()-10,jbt.getY());
jbt2.setLocation(jbt2.getX()-10,jbt2.getY());
jbt.repaint();
}
}
}
class BackGround extends Canvas{
public void paint(Graphics g){
BufferedImage bufferedImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
try {
bufferedImage=ImageIO.read(new FileInputStream("bj.jpg"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage(bufferedImage,0,0,null);
}
}