2016-03-29 3 views
0

私は9x9配列を作り、アイコンであるJButtonsを使って配列をアップロードしたいと思います。私は本当にそれが動作していない理由を理解していない...あなたが助けてくれることを願って、ありがとう!GridLayout - JButton、配列、イメージ?

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); 
     } 

} 

答えて

2

あなたはJButtonのクラスを拡張するが、その後、あなたのコードでは、新しいJButtonのを作成します。

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

これは、次の2つのボタンを持っていることを意味:

  1. アイコンなしでGUIに追加するクラスそのものと、
  2. あなたが作成したことのあるボタンは使用しません。

新しい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; 

さらに良いことには自分のループの外に一度画像アイコンを作成することで、あなたはすべてのボタン上のアイコンを共有することができます。

+0

ありがとうございました!それは本当に役立った...それは働いている! :) –

+0

問題を解決するのに役立ちましたら[回答を受け入れてください](http://meta.stackexchange.com/a/5235/155831)してください。 –

関連する問題