登陆

JAVA-图片移动业务之上移动

admin 2022-11-24 17人围观 ,发现0个评论

image

代码一

package com.itheima_06;  public class App{     public static void main(String[] args) {         PictureFrame pf=new PictureFrame();      } }  

代码二

package com.itheima_06;  import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random;  public class PictureFrame extends JFrame {      private int[][] datas = {             {1, 2, 3, 4},             {5, 6, 7, 8},             {9, 10, 11, 12},             {13, 14, 15, 0}     };      //定义两个int类型的变量,用于记录0号图片的位置     private int x0;     private int y0;      //定义上左下右,求助,重置按钮     private JButton shangButton;     private JButton zuoButton;     private JButton xiaButton;     private JButton youButton;     private JButton qiuzhuButton;     private JButton chongzhiButton;      //定义面板      private JPanel imagePanel;         public PictureFrame() {         //用于窗体的基本设置         initFrame();            //二维数组元素打乱         randomData();          //窗体上组件的绘制         paintView();          //给按钮添加事件         addButtonEvent();          //设置窗体可见         this.setVisible(true);      }      //移动的图形重新绘制     public void rePaintView(){         //移除面板上所有的组件         imagePanel.removeAll();          //遍历二维数组得到图片编号         for (int i = 0; i < datas.length; i++) {             for (int j = 0; j < datas[i].length; j++) {                 //创建JLabel对象加载图片资源                 JLabel imageLabel = new JLabel(new ImageIcon("itheima_picture_puzzle\\images\\" + datas[i][j] + ".png"));                 //调整图片的位置                 imageLabel.setBounds(j * 90, i * 90, 90, 90);                 imagePanel.add(imageLabel);             }         } //        把面板添加到窗体上         this.add(imagePanel);          //重新绘制窗体         imagePanel.repaint();     }      //给按钮添加事件     public void addButtonEvent(){         shangButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("上");                  //边界处理                 if(x0==3){                     return;                 }                 //位置交换                 datas[x0][y0]=datas[x0+1][y0];                 datas[x0+1][y0]=0;                 x0=x0+1;                   //调用重绘的方法                 rePaintView();             }         });         zuoButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("左");             }         });         xiaButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("下");             }         });         youButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("右");             }         });         qiuzhuButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("求助");             }         });         chongzhiButton.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.out.println("重置");             }         });     }     //二维数组元素打乱     public  void randomData(){         Random r =new Random();         for (int i = 0; i < datas.length; i++) {             for (int j = 0; j < datas[i].length; j++) {                 int x=r.nextInt(datas.length);                 int y=r.nextInt(datas[i].length);                   int temp =datas[i][j];                 datas[i][j]=datas[x][y];                 datas[x][y]=temp;               }         }         //记录0号图片的位置         wc:for (int i = 0; i < datas.length; i++) {             for (int j = 0; j < datas[i].length; j++) {                 if(datas[i][j]==0){                     x0=i;                     y0=j;                     break wc;                 }             }         }         System.out.println(x0+","+y0);     }      //窗体上组件的绘制     public void paintView() {         //标题图片         JLabel titleLabel = new JLabel(new ImageIcon("itheima_picture_puzzle\\images\\title.png"));         titleLabel.setBounds(354, 27, 232, 57);         this.add(titleLabel);          //定义一个二维数组用来存储图片的编号 //        int[][] datas={ //                {1,2,3,4}, //                {5,6,7,8}, //                {9,10,11,12}, //                {13,14,15,16} //        };         //创建面板          imagePanel = new JPanel();         imagePanel.setBounds(150, 114, 360, 360);         imagePanel.setLayout(null);//取消面板的默认布局         //遍历二维数组得到图片编号         for (int i = 0; i < datas.length; i++) {             for (int j = 0; j < datas[i].length; j++) {                 //创建JLabel对象加载图片资源                 JLabel imageLabel = new JLabel(new ImageIcon("itheima_picture_puzzle\\images\\" + datas[i][j] + ".png"));                 //调整图片的位置                 imageLabel.setBounds(j * 90, i * 90, 90, 90);                 imagePanel.add(imageLabel);             }         } //        把面板添加到窗体上         this.add(imagePanel);          //动漫参照图         JLabel canZhaoTuLabel = new JLabel(new ImageIcon("itheima_picture_puzzle\\images\\canzhaotu.png"));         canZhaoTuLabel.setBounds(574, 114, 122, 121);         this.add(canZhaoTuLabel);          //上下左右按钮以及求助重置按钮          shangButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\shang.png"));         shangButton.setBounds(732, 265, 57, 57);         this.add(shangButton);            zuoButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\zuo.png"));         zuoButton.setBounds(650, 347, 57, 57);         this.add(zuoButton);            xiaButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\xia.png"));         xiaButton.setBounds(732, 347, 57, 57);         this.add(xiaButton);            youButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\you.png"));         youButton.setBounds(813, 347, 57, 57);         this.add(youButton);            qiuzhuButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\qiuzhu.png"));         qiuzhuButton.setBounds(626, 444, 108, 45);         this.add(qiuzhuButton);           chongzhiButton = new JButton(new ImageIcon("itheima_picture_puzzle\\images\\chongzhi.png"));         chongzhiButton.setBounds(786, 444, 108, 45);         this.add(chongzhiButton);           //展示背景图         JLabel backgroundLabel = new JLabel(new ImageIcon("itheima_picture_puzzle\\images\\background.png"));         backgroundLabel.setBounds(0, 0, 960, 530);         this.add(backgroundLabel);     }       //用于窗体的基本设置     public void initFrame() {         //窗体大小         this.setSize(960, 565);          //窗体标题         this.setTitle("动漫拼图");          //窗体居中         this.setLocationRelativeTo(null);          //窗体关闭时退出程序         this.setDefaultCloseOperation(3);          //窗体要位于其他窗口之上         this.setAlwaysOnTop(true);          //取消窗体默认布局         this.setLayout(null);     } }  

执行结果
image

请发表您的评论
11553文章数 0评论数
最近文章
请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP