2016-03-29 32 views
0

9x9 dizisi oluşturmak ve dizini bir simge olan JButtons ile yüklemek istiyorum. Gerçekten neden işe yaramadığını anlamıyorum ... Umarım yardım edebilirsin, teşekkürler!GridLayout - JButtons, dizi ve görüntüler?

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

} 

cevap

2

yeni JButton Sen JButton sınıfını genişletir ancak daha sonra kodunuzda oluşturabilir: Bunun anlamı

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

iki düğme var :

  1. , bir simge olmadan GUI'ye eklediğiniz sınıfın kendisi ve
  2. oluşturduğunuz ancak asla kullanmamanız gereken düğmedir.

Yeni bir JButton oluşturmayın. Bunun yerine tüm ihtiyaç vardır: Eğer bir düğmeye herhangi yeni işlevler ekleyerek olmadığı için

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

iyisi bile BWbutton sınıfı oluşturmak değil.

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

Daha da iyisi o zaman bütün düğmeleri Simge paylaşabilir, sadece döngünün dışında bir kez görüntü simgesini oluşturmaktır: sizin döngü kodunda yerine

sadece Simge bir düğme oluşturmak ve set.

+0

Çok teşekkür ederim! Gerçekten yardımcı oldu ... Çalışıyor! :) –

+0

Sorunu çözdüyse, lütfen [cevabı kabul et] (http://meta.stackexchange.com/a/5235/155831). –