利用GUI制作拼图小游戏

  1. JFrame表示窗体
  2. JMenuBar表示菜单,JMenu表示菜单中的字,JMenuitem表示目录
  3. JLabel表示管理文字和图片的文字
  4. JFrame,JMenuBar,JLabel称为组件
  5. 利用空参构造对对象进行初始化:public   方法名(){}
  6. setsize()表示宽和高,setvisible(true或者false)表示窗体是否显示,true表示显示,false表示不显示
  7. //设置页面标题
    this.setTitle("拼图游戏1.0");
    //设置界面置顶
    this.setAlwaysOnTop(true);
    //设置界面居中
    this.setLocationRelativeTo(null);
    //设置关闭模式:其中括号内填0-3,0代表什么都不做程序关闭,1代表默认关闭,2代表窗口全部关闭后程序关闭,3代表只要有一个窗口关闭程序关闭
    this.setDefaultCloseOperation(3);
    //让界面显示出来,建议写到最后
    this.setVisible(true);
  8. 添加图片:
    //ImageIcon表示照片存放路径,在把照片放到JLabel容器中
    JLabel jLabel = new JLabel(new ImageIcon("D:\\拼图游戏\\.idea\\img\\图片"+number+".png"));
    //设置照片位置,以作上角为坐标原点和位置
    jLabel.setBounds(342*j,332*i,342,332);
    //将照片添加到隐藏的组件框中
    this.getContentPane().add(jLabel);ps:这里要注意先要将照片默认的中间位置取消,一般添加到界面初始化位置
    //取消默认居中效果,只有这样照片才按照X,Y轴的形式添加组件
    this.setLayout(null);
  9. 事件分为:事件源(按钮,窗体,图片等),事件(鼠标点击,划入等),绑定监听(执行了哪个动作,就执行哪个代码,有键盘监听(KeyListener),鼠标监听(MouseListener),动作监听:鼠标左键点击和空格(ActionListener))
  10. 动作监听:只能实现鼠标左键点击和空格,实现的两种方式:
    //创建一个按钮对象
    JButton jButton = new JButton("不要点我");
    //设置位置和宽高
    jButton.setBounds(0,0,100,90);
    //给按钮添加动作监听
    //将按钮添加到界面中去,这里的参数为实现类,因为只使用一次,我们使用匿名内部类
    jButton.addActionListener(new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
    System.out.println("点击生效");
    }
    });
    //把按钮添加到界面中
    jFrame.getContentPane().add(jButton);这个是在测试类中直接书写
  11. 在Javaben中
    public class MyActionListenter extends JFrame implements ActionListener {
    JButton jButton = new JButton("点我啊");
    JButton jButton1 = new JButton("在点击我啊");

    public MyActionListenter() {
    this.setSize(700, 700);
    this.setTitle("点击我");
    this.setAlwaysOnTop(true);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(3);
    this.setLayout(null);
    //创建一个按钮对象

    jButton.setBounds(0, 0, 100, 100);
    //在创建一个按钮对象

    jButton1.setBounds(200, 200, 100, 100);
    //给按钮添加事件
    jButton.addActionListener(this);this代表本类中的地址
    jButton1.addActionListener(this);
    //把按钮添加到界面中
    this.getContentPane().add(jButton);
    this.getContentPane().add(jButton1);
    this.setVisible(true);


    }

    @Override
    public void actionPerformed(ActionEvent e) {
    //对当前按钮进行判断
    //获取当前被操作的那个按钮对象: e.getSource()
    Object source = e.getSource();
    if (source==jButton){
    jButton.setSize(400,400);
    }else if (source==jButton1){
    Random random = new Random();
    jButton1.setLocation(random.nextInt(500),random.nextInt(500));

    }


    }
    }
  12. 鼠标事件可以分为 划入,划出,按住不放,松开,单击
    public class MouseAction extends JFrame implements MouseListener {
    //创建鼠标事件对象,写在成员变量位置
    JButton jButton = new JButton("请你点击我");
    public MouseAction(){
    this.setSize(700, 700);
    this.setTitle("点击我");
    this.setAlwaysOnTop(true);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(3);
    this.setLayout(null);
    jButton.setBounds(0,0,100,100);
    jButton.addMouseListener(this);
    //添加到整个菜单中
    this.getContentPane().add(jButton);

    this.setVisible(true);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    System.out.println("单击鼠标");

    }

    @Override
    public void mousePressed(MouseEvent e) {
    System.out.println("鼠标按住");
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    System.out.println("鼠标释放");

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    System.out.println("鼠标划入");

    }

    @Override
    public void mouseExited(MouseEvent e) {
    System.out.println("鼠标划出");

    }
    }
  13. 键盘事件
    public class KeyAction extends JFrame implements KeyListener {
    public KeyAction(){
    this.setSize(600,600);
    this.setTitle("键盘点击事件");
    this.setAlwaysOnTop(true);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(3);
    this.setLayout(null);

    this.addKeyListener(this);

    this.setVisible(true);


    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
    System.out.println("按住不放");
    }

    @Override
    public void keyReleased(KeyEvent e) {
    System.out.println("按住放开");
    //获取键盘键上的每一个编号
    int keyCode = e.getKeyCode();
    System.out.println(keyCode);


    }
    }
  14. return有两个作用:在方法中,如果没有返回值类型,是void,者表示结束当前方法,如果有返回值类型,则表示返回结果
  15. break表示结束switch循环和当前循环,而continue表示结束当次循环,并且continue后面的语句无法执行
posted @ 2023-01-04 20:02  为zq  阅读(115)  评论(0)    收藏  举报