【问题标题】:2D array of objects and JButtons对象和 JButton 的二维数组
【发布时间】:2021-06-07 12:52:11
【问题描述】:

我有一个关于将类的二维数组“链接”到 JButtons 的问题。我遇到了与this 先前提出的问题类似的问题,发现solution 非常有帮助。我需要用图片创建一个 4x4 的 JButton 板。我使用 Square 类来表示每个网格方块,它们应该都是 JButtons。我通过private Square[][] square = new Square[4][4];在我的Board类中初始化了它

但是,当类不同时,我不明白如何将图像添加到 JButton。我最初是由square[i][j] = new JButton(p); 完成的,其中 p 是我正在使用的图像的对象名称,但它会引发错误:“JButton 无法转换为 Square”。

我将如何避免这个错误?另外,我不想创建 JButton 的 2D 数组。

我的 Square 课基本上是:

public class Square extends JButton
{
    private int xNum;
    private int yNum;
        
    public Square(int xNum, int yNum) {
        this.xNum = xNum;
        this.yNum = yNum;
    }

    // and then a few get and set methods...
}

【问题讨论】:

    标签: java swing multidimensional-array jbutton


    【解决方案1】:

    很高兴看到你的对象 square 的代码,但我假设你可以在你的 square 类中添加一个私有变量 JButton,然后你可以创建 getter 和 setter。现在,当你遍历你的 for 循环并初始化你的方块时,你可以这样做

    square[i][j] = new square();
    square[i][j].setJButton(new JButton(p));
    

    以及每当您需要访问 JButton 调用时

    square[i][j].getJButton();
    

    希望对您有所帮助,如果我对您的问题的理解有误,请发表评论,我会尽快回复您。

    【讨论】:

    • 此外,在初始化对象时,您不能将其初始化为另一个对象,除非另一个对象是它的子部分。有一个完整的主题叫做多态性,它在更大的项目中非常有用,如果你继续使用 Java,你一定会遇到需要它的情况。在你的情况下,我真的认为你不需要使用这种技术。
    • 感谢您的回复!如果将 Square 类扩展为 JButton,是否还需要添加 JButton 的私有变量?
    • 我还给出了我的正方形类的原始代码,我想我已经在帖子中展示了我的正方形对象的代码。我尝试了您的解决方案,但出现错误“在square[i][j].setJButton(new JButton(p)); 中找不到符号”...
    • 所以不要扩展 JButton,id 推荐你需要的东西,在你的私有 int xNum 和 yNum 下添加私有 JButton jb;然后你就有了 jb 的 getter 和 setter(或者你命名的任何东西),然后它应该可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2019-04-13
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多