早上无聊写了个自己玩玩.做维护没事干
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ball extends JPanel implements KeyListener{
private int x = 20;//小球的大小
private int y = 20;//小球的大小
private int a = 50;//小球的位置
private int b = 50;//小球的位置
private int x1 = 200;//窗体的大小
private int y1 = 200;//窗体的大小
ball(){
JFrame jf = new JFrame();
jf.setLocation(200,200);
jf.setSize(x1,y1);
JPanel p1 = new p();//覆盖组建的paint方法才能用
jf.getContentPane().add(p1);
jf.setVisible(true);
jf.addKeyListener(this);
try{ 
while(true){
Thread.sleep(50);
p1.repaint();
}
}catch(InterruptedException e){
e.printStackTrace();
}
}


public void keyTyped(KeyEvent e){ }
public void keyPressed(KeyEvent e){
//System.out.println(e.getKeyCode());
//System.out.println(e.VK_KP_DOWN); if(e.getKeyCode() == 40){//下 y += 4;
}
if(e.getKeyCode() == 39){//右
if(x>=x1-(x-b/2)){//请问怎么计算小球撞到窗体边缘.我感觉老是不行帮我鲁下思路吧高人

}else{
x += 4;
}
}
if(e.getKeyCode() == 37){//左
x -= 4;
}
if(e.getKeyCode() == 38){//上
y -= 4;
}
}
public void keyReleased(KeyEvent e){
//System.out.println("+++++++++++++++");
} public static void main(String[] args){
ball b = new ball();

//b.paint();
}
private class p extends JPanel{
public void paint(Graphics g){
super.paint(g);   
g.setColor(Color.blue);
//System.out.println(a +"a"+ b+"b" + x +"x"+ y+"y");
g.fillOval(x,y,a,b);
g.drawOval(x,y,a,b);

}
}
}

解决方案 »

  1.   

    public void keyPressed(KeyEvent e)
    {
    // System.out.println(e.getKeyCode());
    // System.out.println(e.VK_KP_DOWN); if (e.getKeyCode() == 40)
    {// 下
    if(y > (y1 - (2 * b )))
    {
    // y = y1 - 2 * b;
    }
    else 
    {
    y += 4;
    }
    }
    if (e.getKeyCode() == 38)
    {// 上
    if(y < 0)
    {
    // y = b;
    }
    else 
    {
    y -= 4;
    }
    }

    if (e.getKeyCode() == 39)
    {// 右
    if (x > (x1 - (2 * a )))
    {// 请问怎么计算小球撞到窗体边缘.我感觉老是不行帮我鲁下思路吧高人

    }
    else
    {
    x += 4;
    }
    }
    if (e.getKeyCode() == 37)
    {// 左
    if(x < 0)
    {
    }
    else
    {
    x -= 4;
    }
    }
    }