2016-03-29 21 views
0

Ich möchte ein 9x9-Array erstellen und laden Sie das Array mit JButtons, die ein Symbol ist. Ich verstehe nicht wirklich warum es nicht funktioniert ... Ich hoffe du kannst helfen, danke!GridLayout - JButtons, Array und Bilder?

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

} 

Antwort

2

verlängern Sie die JButton-Klasse, aber dann in Ihrem Code erstellen Sie eine neue JButton:

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

Das heißt, Sie haben zwei Tasten :

  1. die Klasse selbst, die Sie der GUI ohne ein Symbol hinzufügen und
  2. die Schaltfläche, die Sie erstellen, aber nie verwenden.

Erstellen Sie keine neue JButton. Statt alles, was Sie brauchen, ist:

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

Noch besser wäre es nicht einmal eine BWbutton Klasse erstellen, da Sie keine neue Funktionalität auf die Schaltfläche Hinzufügen werden.

Statt in Ihrem Looping-Code nur eine Schaltfläche erstellen, und stellen Sie die Icon:

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

Noch besser ist es, nur das Bildsymbol zu erstellen, sobald außerhalb der Schleife, dann können Sie das Icon auf allen Tasten teilen.

+0

Vielen Dank! Es war wirklich hilfreich ... Es funktioniert! :) –

+0

Bitte [akzeptieren Sie die Antwort] (http://meta.stackexchange.com/a/5235/155831), wenn es geholfen hat, das Problem zu lösen. –