让小方块移动(左右移动及下移)
JPanel类
在JPanel里先画一个小方块,由x和y的大小控制小方块的位置
int x=40;//x,y为小方块的初始位置
int y=0;
public NewJPanel() {
initComponents();
}
public void paintComponent(Graphics g)//Java使用Graphics类进行绘图
{
super.paintComponent(g);
g.setColor(Color.red);//将文字,边框或要填充的区域为指定颜色
g.fill3DRect(x,y, 20, 20,true);//用预先指定的颜色填充圆或椭圆(int x , int y , int width , int height)x:距离左边的距离,y:距离右边的距离
}
然后想办法改变x,y的大小
Controller类
Controller类中有改变x和y大小的方法
public class Controller {//控制小方块移动
NewJPanel j;
Controller(NewJPanel j){//重写构造方法
this.j=j;
}
public void left(){j.x-=20;j.repaint();}//左移,x和y是之前定义过的小方块的位置
public void right(){j.x+=20;j.repaint();}//右移
public void down(){j.y+=20;j.repaint();}//下移
public void turn(){}
}
然后再想办法通过键盘的输入,调用相应的Controller里的改变x和y大小的方法
在JFrame的属性中加一个从键盘中获取信息的方法
private void formKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
switch(evt.getKeyCode()){
case 37:controller.left();break;
case 39:controller.right();break;
case 40:controller.down();break;
case 38:controller.turn();break;
}
JFrame类
Controller controller;//Controller类
public NewJFrame() {
initComponents();
NewJPanel nj=new NewJPanel();//定义一个JPanel
nj.setSize(200,400);//设置JPanel类
nj.setLocation(50,50);//设置位置(据左边距离,据上边距离)
nj.setBackground(Color.yellow);//JPanel背景颜色
this.getContentPane().add(nj);//向ContenPane这个容器里面加入nj
controller=new Controller(nj);//创建对象
}