时间一个标签在容器里面随键盘控制移动的问题,代码如下:
import java.awt.*;
import java.net.URL;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class mianban extends JFrame{
int countx;
int county;
JLabel jl=new JLabel();
Container c=getContentPane();
private static Thread t;
public mianban(){
Icon tb=new ImageIcon("D:/Program Files/eclipse/workplace/箱子/src/1.gif");
c.setLayout(null);
c.setBackground(Color.white);
setVisible(true);
setSize(300,300);
jl.setIcon(tb);
jl.setBounds(100,50, 30, 30);
jl.setOpaque(true);
jl.setBackground(Color.red);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
t=new Thread(new Runnable(){
   public void run(){
       jl.setBounds(countx,county,30,30);
               jl.addKeyListener(new KeyListener(){
       public void keyPressed(KeyEvent e){
   int keycode=e.getKeyCode();
   if(keycode==KeyEvent.VK_UP){
   county=county+10;
    }
if(keycode==KeyEvent.VK_DOWN){
county=county-10; }
if(keycode==KeyEvent.VK_LEFT){
countx=countx-10;

}
if(keycode==KeyEvent.VK_RIGHT){
countx=countx+10;

} }
public void keyTyped(KeyEvent e){ // 发生击键事件时被触发

} public void keyReleased(KeyEvent e){ // 按键被释放时被触发

}
});
}
});
t.start();
c.add(jl);
}
public static void main(String[] args) {
new mianban(); }}
无论怎么按方向键,标签总是不移动,不知道哪里错了,请高人解答~~~~~

解决方案 »

  1.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    public class Main extends JFrame{
    int countx;
    int county;
    JLabel jl=new JLabel();
    Container c=getContentPane();
    private static Thread t;
    public Main(){
    Icon tb=new ImageIcon("D:/Program Files/eclipse/workplace/箱子/src/1.gif");
    c.setLayout(null);
    c.setBackground(Color.white);
    setVisible(true);
    setSize(300,300);
    jl.setIcon(tb);
    jl.setBounds(100,50, 30, 30);
    jl.setOpaque(true);
    jl.setBackground(Color.red);
    this.addKeyListener(new KeyListener(){
          public void keyPressed(KeyEvent e){
      int keycode=e.getKeyCode();
      if(keycode==KeyEvent.VK_UP){
      setCountY(county-10);
        }
    if(keycode==KeyEvent.VK_DOWN){
    setCountY(county+10);}
    if(keycode==KeyEvent.VK_LEFT){
    setCountX(countx-10);}
    if(keycode==KeyEvent.VK_RIGHT){
    setCountX(countx+10);}}
    public void keyTyped(KeyEvent e){ // 发生击键事件时被触发}public void keyReleased(KeyEvent e){ // 按键被释放时被触发}
    });
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    c.add(jl);
    }public void setCountX(int countx){
       this.countx=countx;
       jl.setLocation(countx, county);
    }public void setCountY(int county){
     this.county=county;
     jl.setLocation(countx, county);
    }public static void main(String[] args) {
    new Main();}}