首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

java 华容道,为何键盘事件没有用哦!各位,拜托了!

2012-12-22 
java 华容道,为什么键盘事件没有用哦!!各位,拜托了!!mport java.awt.Colorimport java.awt.Fontimport j

java 华容道,为什么键盘事件没有用哦!!各位,拜托了!!
mport java.awt.Color;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
 *
 * @author Administrator
 */
public class Test_ShuaRDao {
    public static void main(String[] args) {
        new  HU_R_D("华容道游戏");
    }
    
}

class Person extends JButton implements FocusListener{
    int number;
    Color c=Color.lightGray;
    public Person(int number,String s){
        //super(s);
        this.setText(s);
        this.setFont(new Font("宋体", 1,20));
        this.setBackground(c);
        this.number=number;
        this.addFocusListener(this);
    }
    
     @Override
    public void focusGained(FocusEvent e) {
        this.setBackground(Color.red);
        System.out.println("sdfs");
    }

    @Override
    public void focusLost(FocusEvent e) {
        this.setBackground(c);
    }
    
}

class HU_R_D extends JFrame implements ActionListener,KeyListener,MouseListener{
    Person person[] =new Person[10];
    JButton up ,left,right,below;
    JButton restart=new JButton("重新开始玩");
    public HU_R_D (String s){
        super(s);
        init();
        this.setBounds(20, 20, 500, 650);
        this.setBackground(Color.white);
        this.validate();
        //this.pack();
        this.setVisible(true);
        this.addWindowListener(new WindowAdapter(){
            @Override
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
    }
    public void init(){


        this.setLayout(null);
        this.add(restart);
        restart.setBounds(200, 580, 120, 25);
        restart.setBackground(Color.ORANGE);
        String s[]={"兵","兵","兵","兵","关羽","张飞","子龙","马超","黄忠","曹操"};
        for(int i=0;i<s.length;i++){
            person[i]=new Person(i,s[i]);
            person[i].addMouseListener(this);
            person[i].addKeyListener(this);
            this.add(person[i]);
        }
        person[0].setBounds(50, 50, 100, 100);
        person[1].setBounds(50, 150, 100, 100);
        person[2].setBounds(350, 50, 100, 100);
        person[3].setBounds(350, 150, 100, 100);
        person[4].setBounds(150, 250, 200, 100);
        person[5].setBounds(50, 250, 100, 200);
        person[6].setBounds(150, 350, 100, 200);
        person[7].setBounds(350, 250, 100, 200);
        person[8].setBounds(250, 350, 100, 200);
        person[9].setBounds(150, 50, 200, 200);
        person[5].requestFocus();
         up=new JButton();
         up.setText("那一年..曹操..华容道");
         up.setFont(new Font("宋体", 10,40));
         left=new JButton();
         right=new JButton();
         below=new JButton();
         up.setBackground(Color.yellow);
         left.setBackground(Color.pink);
         right.setBackground(Color.pink);
         below.setBackground(Color.pink);
         up.setBounds(0, 0, 500, 50);
         below.setBounds(0, 550, 500, 20);
         left.setBounds(0, 50, 50, 500);
         right.setBounds(450, 50, 50, 500);
         this.add(right);
         this.add(left);
         this.add(up);
         this.add(below);
         this.validate();//刷新
  }
    

    @Override
    public void actionPerformed(ActionEvent e) {


        this.dispose();
        new  HU_R_D("华容道游戏");
    }

    @Override
    public void keyTyped(KeyEvent e) { }

    @Override
    public void keyPressed(KeyEvent e) {
        Person man =(Person)e.getSource();
        if(e.getKeyCode()==KeyEvent.VK_KP_DOWN){
            System.out.println("sdfs");
            go(man, below);
            
        }
        if(e.getKeyCode()==KeyEvent.VK_KP_UP){
            go(man,up);
        }
        if(e.getKeyCode()==KeyEvent.VK_KP_LEFT){
            go(man,left);
        }
        if(e.getKeyCode()==KeyEvent.VK_KP_RIGHT){
            go(man ,right);
    }
    }

    @Override
    public void keyReleased(KeyEvent e) {}

    @Override
    public void mouseClicked(MouseEvent e) { }

    @Override
    public void mousePressed(MouseEvent e) {
        int x=0,y=0;
        Person man =(Person)e.getSource();
        x=e.getX();
        y=e.getY();
        
    }

    @Override
    public void mouseReleased(MouseEvent e) {}

    @Override
    public void mouseEntered(MouseEvent e) { }

    @Override
    public void mouseExited(MouseEvent e) { }
    public void go(Person man,JButton  direction){
        Boolean move =true;
        Rectangle manRect =man.getBounds();
        int x=manRect.x;
        int y=manRect.y;
        if(direction==up){
            y=y-100;
        }
        if(direction==below){
            y=y+100;
        }
        if(direction==left){
            x=x-100;
        }
        if(direction==right){


            x=x+100;
        }
        manRect.setLocation(x, y);
        Rectangle directionRect=direction.getBounds();
        for(int i=0;i<10;i++){
         Rectangle personRect=person[i].getBounds();
         if(manRect.intersects(personRect)&&man.number!=i){ //如果是覆盖了
             move=false;
         }
         if(manRect.intersects(directionRect)){
             move=false;
         }
         if(move=true){
             man.setLocation(x, y);
         }
        }

    }

 
    
}


[解决办法]
该回复于2012-05-17 10:26:14被版主删除
[解决办法]
谁有做完的?

热点排行