GridLayout - JButtons,数组和图像?

时间:2016-03-29 20:36:07

标签: 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 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]);
    }   
    }

BWbutton.java:

import javax.swing.*;

public class BWbutton extends JButton{

        public BWbutton(){
            ImageIcon icon = new ImageIcon("image.png");
            JButton bt1 = new JButton(icon);
        }

}

1 个答案:

答案 0 :(得分:2)

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

ImageIcon icon = new ImageIcon("image.png");
JButton bt1 = new JButton(icon);

这意味着您有两个按钮:

  1. 您在没有Icon和
  2. 的情况下添加到GUI的类本身
  3. 您创建但从不使用的按钮。
  4. 不要创建新的JButton。相反,您只需要:

    ImageIcon icon = new ImageIcon("image.png");
    //JButton bt1 = new JButton(icon);
    setIcon( icon );
    

    更好的是,甚至不创建BW按钮类,因为您没有为按钮添加任何新功能。

    只需在循环代码中创建一个按钮并设置Icon:

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

    更好的是只需在循环外创建图像图标,然后就可以在所有按钮上共享图标。