首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中更改来自其他类的数组的大小

如何在java中更改来自其他类的数组的大小
EN

Stack Overflow用户
提问于 2018-08-17 04:20:25
回答 1查看 206关注 0票数 0

我正在为java中的一些GUI设计而苦苦挣扎,我想改变另一个类中Jbutton的2D数组的大小。更改大小,将更改添加到框架上的按钮的数量。我尝试过使用实例变量和get()方法,但是在按钮数组上似乎不起作用。我只给出了下面的相关代码:

代码语言:javascript
复制
public class Minefield extends JFrame{
    private JFrame frame;
    private JPanel panel;
    private int ROWS;
    private int COLS;
    private JButton[][] grid = new JButton[getRows()][getCols()];

    public Minefield(int rows, int cols){
        super("Minesweeper 1");

        setRows(rows);
        setCols(cols);

        for(int i = 0; i < grid.length; i++){
            for(int j = 0; j < grid[i].length; j++){
                grid[i][j] = new JButton("[" + i + "][" + j + "]");
                panel.add(grid[i][j]);
                grid[i][j].addActionListener(handler);
            }
            container.add(panel);
        }
    }

    public void setRows(int rows){
        ROWS = rows;
    }

    public int getRows(){
        return ROWS;
    }

    public void setCols(int cols){
        COLS = cols;
    }

    public int getCols(){
        return COLS;
    }
}

下面是我想要运行GUI的测试类,在这个类中我不知道如何更改数组

代码语言:javascript
复制
public class MinefieldTest{
    public static void main(String[] args){

        Minefield minefield = new Minefield(4,2);
        minefield.setVisible(true);

    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-17 04:30:59

然而,这个问题在你希望实现的目标中有点模糊,你不能在类初始化阶段(在构造函数之前运行)初始化数组,而是在构造函数中初始化。

这意味着将在初始化数组本身之前设置rowscols的值。

下面演示了一个可能的工作流,该工作流允许您在构造类之后更改数组的大小(以及按钮的数量),从而使其成为动态的

代码语言:javascript
复制
public class Minefield extends JFrame {

    private JPanel panel;
    private int rows;
    private int cols;
    private JButton[][] grid;

    public Minefield(int rows, int cols) {
        super("Minesweeper 1");

        setGridSize(cols, rows);
    }

    public void setGridSize(int cols, int rows) {
        container.removeAll();
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                grid[i][j] = new JButton("[" + i + "][" + j + "]");
                panel.add(grid[i][j]);
                grid[i][j].addActionListener(handler);
            }
            container.add(panel);
        }
        container.revalidate();
        container.repaint();
    }

    public int getRows() {
        return rows;
    }

    public int getCols() {
        return cols;
    }
}

使用rowscols的设置器没有什么意义,因为这会使重新构造数组变得非常困难,如果您想要提供在创建类后更改数组的能力,那么使用setGridSize并同时传入这两个参数将使更新变得容易得多。否则,您可能应该忽略它们,只将它们传递给构造函数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51884774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档