Seryjna produkcja obiektów

0

Witam

Chciałbym stworzyć masę obiektów np. klasy JButton

 	for(int i=0;i<64;i++){
	JButton nazwaObiektu = new JButton();
	}
	  

ale chce aby po stworzeniu ich, móc odwoływać się poprzez ich nazwę czyli np. Przycisk1 , Przycisk2 itd.

wiem że mogę zrobić tak że obiektu upycham do tablicy obiektów typu JButton i odwołuje się do nich poprzez ich miejsce w tablicy, ale jak zrobić żeby zmieniać nazwę obiektu , było by miło gdyby mogło działać coś takiego:

 
	for(int i=0;i<8;i++){
	JButton Integer.toString(i) = new JButton();
	}
	  

I dzięki czemu dostawał bym ponumerowane buttony.

Z góry dziękuje za pomoc mam nadzieje że nie wykazałem się przesadna głupotą i ktoś mi pomoże.

Pozdrawiam serdecznie

0

od tego jest właśnie tablica. tak ci będą przeszkadzać nawiasy kwadratowe wokół cyferki?

0

Ewentualnie, jeśli z nazwy chcesz wnioskować co to za button, to HashMap. Wtedy odwołania będą wyglądały tak:

HashMap<String,JButton> buttons =new HashMap<String,JButton>();
...
buttons.get("Przycisk wystrzeliwujący rakietę").setEnabled(true);
0

dzięki za odpowiedzi, ale korzystając z okazji spytam jeszcze o jedną rzecz związaną z tematem, w materiałach dydaktycznych znalazłem:

for (int i=0; i<icon.length; i++) {

     // tworzenie kolejnych przycisków
     JButton b = new JButton(opis[i], icon[i]);

     // Ustalenie pisma i koloru napisu na przyciskach
     b.setFont( new Font("Dialog", Font.BOLD | Font.ITALIC, 18));
     b.setForeground(Color.blue);

    //  Ustalenie pozycji tekstu na przycisku względem ikony
     b.setVerticalTextPosition(SwingConstants.BOTTOM);
     b.setHorizontalTextPosition(SwingConstants.CENTER);

     frame.add(b);   // dodanie przycisku do contentPane okna
     }
 

przy takim sposobie tworzenia przycisków, można w jakiś sposób odwołać się do np.drugiego w kolejności tworzenia przycisku, po stworzeniu wszystkich??
Bo referencja do obiektu zostaje stracona bezpowrotnie po dopisaniu adresu kolejnego obiektu.....słusznie myśle?

0

Referencja jest stracona, jeżeli w oknie są tylko przyciksi, to getComponent(index) zadziała.
Jeśli są różne komponenty, to getComponents() zwróci tablicę komponentów. Możesz w niej szukać np drugiego przycisku.
Tym niemniej dużo prościej jest stworzyć tablice lub kolekcję przycisków.

//pole w klasie
JButton[] przyciski=new JButton[icon.length];
ArrayList<JButton> przyciski=new ArrayList<JButton>();
for (int i=0; i<icon.length; i++) {

     // tworzenie kolejnych przycisków
     JButton b = new JButton(opis[i], icon[i]);
     przyciski[i]=b;
     przyciski.add(b);

     // Ustalenie pisma i koloru napisu na przyciskach
     b.setFont( new Font("Dialog", Font.BOLD | Font.ITALIC, 18));
     b.setForeground(Color.blue);

    //  Ustalenie pozycji tekstu na przycisku względem ikony
     b.setVerticalTextPosition(SwingConstants.BOTTOM);
     b.setHorizontalTextPosition(SwingConstants.CENTER);

     frame.add(b);   // dodanie przycisku do contentPane okna
     }

1 użytkowników online, w tym zalogowanych: 0, gości: 1