使用java swing组件搭建简单的游戏窗体,实现己方对象上下左右移动的基础步骤解析

  1. 首先要搭建一个窗口,即新建一个类,继承Jframe类,并且在类中搭建好你的窗体:如窗体大小、窗体的布局方式、窗体的位置、窗体的一些控件等。最后设置窗体为可见。
public class Begin extends JFrame {
 /**
  * 初始化方法
  */
 public void init(){
  //设置标题
  this.setTitle("玩玩而已");
  //设置窗体大小
  this.setSize(500,400);
  //设置布局
  this.setLayout(null);
  //设置窗体关闭程序自动关闭
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  //设置窗体居中显示
  this.setLocationRelativeTo(null);
  //添加主面板
  MainJpanel mainJpanel=new MainJpanel();
  mainJpanel.init(this);
  //设置面板大小
  mainJpanel.setBounds(0, 0, 500, 400);
  //设置主面板可见
  this.add(mainJpanel);
  //设置窗体可见
  this.setVisible(true);
 }
  1. 搭建好窗口以后,我们需要新建一个画板,把这个面板在添加到窗口里面。然后我们就在画板类里面进行一系列的操作,如上图添加。面板里,我们要做的事比较多:
    2.1首先我们要继承Jpanel类,然后声明一个窗体类的对象,并且定义一个带参的构造方法,用来把窗体类的属性都传过来:
public class MainJpanel extends JPanel{
 //声明全局的begin对象
 Begin begin;
 //声明玩家对象
 public Player player=new Player();
 //声明一个图片对象
 ImageIcon img=player.player4;
 //面板加载方法
 public void init(Begin begin){
  this.begin=begin;
  //设置玩家出现的初始位置
  player.x=200;
  player.y=10;
  //给面板添加监听器
  KeyClick kc=new KeyClick();
  begin.addKeyListener(kc);
  //启用刷新面板线程
  Rethread rt=new Rethread(this);
  rt.start();

 }

2.2东西都传过来以后,我们就可以重写paintComponent()方法,在这个方法里面往面板上面画东西了。操作代码如下:

@Override
 protected void paintComponent(Graphics g) {
  super.paintComponent(g);
  //在面板上面出玩家
  g.drawImage(img.getImage(), player.x, player.y, 40, 40, this);

  g.drawString(".", player.x, player.y);

 }

2.3写了上面这些代码,应该就可以看到面板上面的东西了。前提是你有写玩家的实体类。图片路径没有错误。

/**
 * 玩家实体类
 * @author VastWu
 *
 */
public class Player {
 //给点位置属性
 public int x;
 public int y;
 //给一个初始速度
 public int speed=10;
 //玩家模型
 public ImageIcon player1=new ImageIcon("imgs\\22.png");
 public ImageIcon player2=new ImageIcon("imgs\\22right.png");
 public ImageIcon player3=new ImageIcon("imgs\\22down.png");
 public ImageIcon player4=new ImageIcon("imgs\\22left.png");
}

2.4以上是玩家实体类,完成以上代码应该可以看到东西了:

java制作游戏客户端的软件 java怎么做游戏界面_java搭建窗体


2.5想让飞机动起来,我们可以在面板类里面添加一个内部类来实现监听,这里我是用的键盘事件监听,用飞机坐标加减飞机速度来实现移动。详细代码如下。添加监听器步骤请见上第二段码 源码较长,贴图

java制作游戏客户端的软件 java怎么做游戏界面_实体类_02

2.6写完这些,你以为你的飞机就可以动了吗?这样子其实还是不可以动的,想让飞机动起来,我们还需要一个线程类,来对面板类进行不断地刷新,就是让paint方法不停的画,一直刷新面板。然后再启动这一线程。如:

/**
 * 面板刷新线程
 * @author VastWu
 *
 */
public class Rethread extends Thread{
 MainJpanel mainJpanel;
 public Rethread(MainJpanel mainJpanel){
  this.mainJpanel=mainJpanel;
 }
 @Override
 public void run() {
  while(true){
   try {
    Thread.sleep(10);
   } catch (Exception e) {
    
    e.printStackTrace();
   }
   mainJpanel.repaint();
  }
 }
}
  1. 写到这里,后面很多的游戏动作基本雷同。完成了己方机的基础移动动作,并且随着移动方向改变图片的方向!