Java GridLayout-按钮、数组和图像?

Java GridLayout-按钮、数组和图像?,java,swing,layout-manager,grid-layout,Java,Swing,Layout Manager,Grid Layout,我想制作一个9x9数组,并上传带有图标JButtons的数组。我真的不明白为什么它不起作用。。。我希望你能帮忙,谢谢 BWbutton buttons[][] = new BWbutton[9][9]; JPanel p1 = new JPanel(); p1.setBackground(Color.white); p1.setPreferredSize(new Dimension(500,500)); p1.setLayout(new GridLayo

我想制作一个9x9数组,并上传带有图标JButtons的数组。我真的不明白为什么它不起作用。。。我希望你能帮忙,谢谢

    BWbutton buttons[][] = new BWbutton[9][9];

    JPanel p1 = new JPanel();
    p1.setBackground(Color.white);
    p1.setPreferredSize(new Dimension(500,500));
    p1.setLayout(new GridLayout(9,9,40,40));


   for(int i=0; i<9; i++){
        for(int j=0; j<9; j++){
            buttons[i][j]=new BWbutton();
            p1.add(buttons[i][j]);
    }   
    }

您扩展了JButton类,但在代码中创建了一个新的JButton:

ImageIcon icon = new ImageIcon("image.png");
JButton bt1 = new JButton(icon);
这意味着您有两个按钮:

  • 添加到GUI中的类本身没有图标和
  • 您创建但从未使用的按钮 不要创建新的JButton。相反,您所需要的是:

    ImageIcon icon = new ImageIcon("image.png");
    //JButton bt1 = new JButton(icon);
    setIcon( icon );
    
    更好的是,甚至不要创建BWbutton类,因为您没有向按钮添加任何新功能

    相反,在循环代码中,只需创建一个按钮并设置图标:

    //buttons[i][j]=new BWbutton();
    JButton button =  new JButton( new ImageIcon("image.png") );
    buttons[i][j]= button;
    

    更好的方法是在循环外创建一次图像图标,然后您可以在所有按钮上共享该图标

    您扩展了JButton类,但在代码中创建了一个新的JButton:

    ImageIcon icon = new ImageIcon("image.png");
    JButton bt1 = new JButton(icon);
    
    这意味着您有两个按钮:

  • 添加到GUI中的类本身没有图标和
  • 您创建但从未使用的按钮 不要创建新的JButton。相反,您所需要的是:

    ImageIcon icon = new ImageIcon("image.png");
    //JButton bt1 = new JButton(icon);
    setIcon( icon );
    
    更好的是,甚至不要创建BWbutton类,因为您没有向按钮添加任何新功能

    相反,在循环代码中,只需创建一个按钮并设置图标:

    //buttons[i][j]=new BWbutton();
    JButton button =  new JButton( new ImageIcon("image.png") );
    buttons[i][j]= button;
    

    更好的方法是在循环外创建一次图像图标,然后您可以在所有按钮上共享该图标

    非常感谢你!这真的很有帮助……它起作用了!:)如果这有助于解决问题,请告诉我。非常感谢!这真的很有帮助……它起作用了!:)如果这有助于解决问题,请告诉我。