威武的仓鼠大大 2022-12-17 14:29 采纳率: 50%
浏览 17
已结题

加上date数组打乱图片后,图片不显示

加上date数组打乱图片后,图片不显示

package puzzle;

import javax.swing.*;
import java.util.Random;

public class GameJFrame extends JFrame {
    int [][] date=new int[4][4];
    public GameJFrame(){
        initJFrame();
        initJMenu();
        initDate();
        initImage();


        this.setVisible(true);
    }

    private void initDate() {
        int []arr1={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};


        Random random=new Random();
        for (int i = 0; i <arr1.length ; i++) {
            int len= random.nextInt(16);
            int z=arr1[i];
            arr1[i]=arr1[len];
            arr1[len]=z;
        }
        int [][] date=new int[4][4];
        for(int j=0;j<arr1.length;j++){
            date[j/4][j%4]=arr1[j];
        }

    }


    private void initImage() {//图片的初始化

        for(int i=0;i<4;i++) {
            for (int j = 0; j < 4; j++) {
                int number=date[i][j];
                ImageIcon icon = new ImageIcon("D:\\java\\gai\\pazzleGame\\picture\\001_" + number + ".jpg");
                //管理容器
                JLabel jLabel = new JLabel(icon);
                //将管理容器添加到界面
                this.add(jLabel);
                jLabel.setBounds(105 * j, 105 * i, 105, 105);//图片位置
                this.getContentPane().add(jLabel);
            }
        }
    }


    private void initJFrame(){
        this.setSize(603,680);
        this.setTitle("拼图游戏1.0");
        this.setAlwaysOnTop(true);//界面置顶
        this.setLocationRelativeTo(null);//界面居中
        this.setDefaultCloseOperation(3);//关闭模式
        this.setLayout(null);//取消居中放置
    }
    private void initJMenu(){
        JMenuBar jMenuBar=new JMenuBar();//创建菜单
        JMenu functionJMenu=new JMenu("功能");//创建菜单的选项
        JMenu aboutJMenu=new JMenu("关于我们");

        //创建选项下面的条目
        JMenuItem replayIter=new JMenuItem("重新游戏");
        JMenuItem reLoginItem=new JMenuItem("重新登录");
        JMenuItem closeItem=new JMenuItem("关闭游戏");

        JMenuItem accountItem=new JMenuItem("公众号");

        //添加选项的条目
        functionJMenu.add(replayIter);
        functionJMenu.add(reLoginItem);
        functionJMenu.add(closeItem);

        aboutJMenu.add(accountItem);

        //将选项添加到菜单中
        jMenuBar.add(functionJMenu);
        jMenuBar.add(aboutJMenu);

        //设置菜单
        this.setJMenuBar(jMenuBar);
    }
}


遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-17 14:38
    关注

    里面有一个问题就是在 initDate 方法里面定义了一个局部变量 date,这个变量和类的成员变量 date 是没有任何关系的。所以在方法里面对于局部变量的赋值并不会影响到类的成员变量。

    那么可以通过将局部变量的赋值给成员变量来解决这个问题,改为如下:

    private void initDate() {
        int []arr1={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    
        Random random=new Random();
        for (int i = 0; i <arr1.length ; i++) {
            int len= random.nextInt(16);
            int z=arr1[i];
            arr1[i]=arr1[len];
            arr1[len]=z;
        }
        for(int j=0;j<arr1.length;j++){
            date[j/4][j%4]=arr1[j];
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度