Java 对象和jbutton的二维数组

Java 对象和jbutton的二维数组,java,swing,multidimensional-array,jbutton,Java,Swing,Multidimensional Array,Jbutton,我有一个关于将类的2D数组“链接”到JButttons的问题。我有一个类似的问题,以前问的问题,并发现这是非常有益的。我需要创建一个4x4板的JButtons与图片。我使用一个Square类来表示每个网格正方形,它们都应该是JButtons。我在我的董事会课堂上通过private Square[]Square=new Square[4][4]初始化了它 然而,我不明白当类不同时如何向JButton添加图像。我最初是通过square[I][j]=newjbutton(p)来实现的其中p是我正在使用

我有一个关于将类的2D数组“链接”到JButttons的问题。我有一个类似的问题,以前问的问题,并发现这是非常有益的。我需要创建一个4x4板的JButtons与图片。我使用一个Square类来表示每个网格正方形,它们都应该是JButtons。我在我的董事会课堂上通过
private Square[]Square=new Square[4][4]初始化了它

然而,我不明白当类不同时如何向JButton添加图像。我最初是通过
square[I][j]=newjbutton(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...
}

很高兴看到objectsquare的代码,但是我假设您可以在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类的原始代码,我想我已经在文章中展示了Square对象的代码。我尝试了你的解决方案,但我得到了错误“无法在
square[I][j]中找到符号”。setJButton(新JButton(p));
“…因此,我建议不要扩展JButton,而是在私有int xNum和yNum下面添加私有JButton jb;然后你就有了jb的getter和setter(或者你给它起的名字),然后它就可以正常工作了。