1) 效果
2)代码实现与资源文件
图片文件: https://pan.baidu.com/s/1Z3jV41aBWJjprBGAgOeeTw?pwd=euqx
package threadEarth;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
class Win_Sky extends JFrame{
private int [][] datas = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,0}
};
private int x0;
private int y0;
private JButton btn2 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\shang.png"));
private JButton btn3 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\zuo.png"));
private JButton btn4 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\xia.png"));
private JButton btn5 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\you.png"));
private JButton btn6 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\qiuzhu.png"));
private JButton btn7 = new JButton(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\chongzhi.png"));
JPanel imagePanel;
Win_Sky(){
initFrame();
randomData();
paintView();
addButtonEvent();
super.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 imageLabel = new JLabel(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\"+datas[i][j]
+".png"));
imageLabel.setBounds(j*90,i*90,90,90);
imagePanel.add(imageLabel);
}
}
imagePanel.repaint();
}
public void addButtonEvent(){
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(x0==3 || x0==-1 || y0==-1){return;}
datas[x0][y0]=datas[x0+1][y0];
datas[x0+1][y0]=0;
x0=x0+1;
rePaintView();
}
});
btn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(y0==3 || x0==-1 || y0==-1){return;}
datas[x0][y0]=datas[x0][y0+1];
datas[x0][y0+1]=0;
y0=y0+1;
rePaintView();
}
});
btn4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(x0==0 || x0==-1 || y0==-1){return;}
datas[x0][y0]=datas[x0-1][y0];
datas[x0-1][y0]=0;
x0=x0-1;
rePaintView();
}
});
btn5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(y0==0 || x0==-1 || y0==-1){return;}
datas[x0][y0]=datas[x0][y0-1];
datas[x0][y0-1]=0;
y0=y0-1;
rePaintView();
}
});
btn6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int num=1;
for (int i = 0; i < datas.length; i++) {
for (int j = 0; j < datas[i].length; j++) {
datas[i][j]=num++;
}
}
x0=y0=-1;
rePaintView();
}
});
btn7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(x0==-1 || y0==-1){
layer1:for (int i = 0; i < datas.length; i++) {
for (int j = 0; j < datas[i].length; j++) {
if(datas[i][j]==16){
datas[i][j]=0;
break layer1;
}
}
}
}
randomData();
rePaintView();
}
});
}
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号图片的位置
layer1: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 layer1;
}
}
}
}
public void paintView() {
btn2.setBounds(732,265,57,57);
btn3.setBounds(650,347,57,57);
btn4.setBounds(732,347,57,57);
btn5.setBounds(813,347,57,57);
btn6.setBounds(626,444,108,45);
btn7.setBounds(786,444,108,45);
JLabel jLabel4 = new JLabel(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\title.png"));
JLabel jLabel5 = new JLabel(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\canzhaotu.png"));
JLabel jLabel6 = new JLabel(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\background.png"));
jLabel4.setBounds(354,27,232,57);
jLabel5.setBounds(574,114,122,121);
jLabel6.setBounds(0,0,960,530);
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 imageLabel = new JLabel(new ImageIcon("D:\\Ddisk\\UnitCode\\Java\\Sky\\Images\\"+datas[i][j]
+".png"));
imageLabel.setBounds(j*90,i*90,90,90);
imagePanel.add(imageLabel);
}
}
super.add(imagePanel);
super.add(jLabel4);
super.add(jLabel5);
super.add(btn2);
super.add(btn3);
super.add(btn4);
super.add(btn5);
super.add(btn6);
super.add(btn7);
super.add(jLabel6);
}
public void initFrame() {
super.setTitle("拼图");
super.setSize(960,565);
super.setLocationRelativeTo(null);
super.setDefaultCloseOperation(3);
super.setLayout(null);
}
}
public class mainn{
public static void main(String[] args){
Win_Sky sky = new Win_Sky();
}
}
995

被折叠的 条评论
为什么被折叠?



