Odpowiadając na Twoje pierwsze pytanie - zainteresuj się na początku koncepcją MVC (Data Model, View, Controller). A co by nie rzucać myślowymi linkami, to powiem w kilku słowach o co chodzi. Powinieneś odseparować od siebie definicje obiektów (klasy), które mają pełnić rolę magazynu i rafinerii danych (Data Model), od obiektów prezentujących interfejs użytkownika (View) oraz obiektów pośredniczących między użytkownikiem a widokiem (Controller).
Dostosowując teraz to, co napisałem do Twojego pytania. Załóżmy, że masz 5 klas implementujących JFrame'y. Każdy z tych JFrame'ów ma posiadać po pięć JButtonów. Tworzysz więc oddzielną klasę (np. "public class DataStorage"), która będzie pełniła rolę magazynu danych. W jej ciele definiujesz wspomnianą przez siebie tablicę - na pierwszy rzut oka wydaje się, że dwuwymiarową (jeżeli zależy Ci wyłącznie na przechowywaniu reprezentacji obiektów klasy JButton), a w jej (klasy) konstruktorze implementujesz jej inicjalizację. Następnie definiujesz metody do ustawiania oraz pobierania wartości z tablicy. Dalej już tylko po prostu tworzysz obiekt klasy DataStorage w klasie pośredniczącej między danymi, a widokiem i voila. Może to wyglądać w wieeeelkim skrócie jak poniżej:
import java.awt.Component;
import javax.swing.JButton;
public class DataStorage {
private Component[][] table;
DataStorage(int x, int y) {
table = new Component[x][y];
}
public void setTableItem(JButton button, int i, int j) {
table[i][j] = button;
}
public Component getTableItem(int i, int j) {
return table[i][j];
}
}
...oraz...
import javax.swing.JButton;
public class Controller {
private static DataStorage dataStorage;
private static JButton button_1;
private static JButton button_2;
public static void main(String args[]) {
// Inicjalizujemy (tworzymy) obiekt klasy DataStorage
dataStorage = new DataStorage(5, 5);
// Ustawiamy przykładowy JButton dla niby'pierwszego JFrame'a
dataStorage.setTableItem(button_1, 0, 0);
// Ustawiamy przykładowy JButton dla niby'drugiego JFrame'a
dataStorage.setTableItem(button_2, 1, 0);
/*
* ... itd. Nic nie stoi jednak na przeszkodzie, byś w klasie Controller inicjalizował
* inne klasy zawierające np. definicje JFrame, czy JButton. Następnie po prostu dodajesz
* utworzone elementy do odpowiednich tablic. Pamiętaj, że nie powinno tworzyć się
* klas "kombajnów". Lepiej mieć ich wiele, ale z mniejszą ilością kodu w nich zawartych.
* Dzięki temu będzie Ci o wiele łatwiej pracować z tworzoną aplikacją. Lepiej zacząć
* praktykować tą sztukę od samego początku :)
*/
}
}
A poniżej masz odpowiedź na pytanie drugie.
public class Tablica {
private JButton wartosc;
public static void main(String args[]) {
String[] odpowiedzi = new String[2];
wartosc = new JButton("666");
odpowiedzi[0] = wartosc.getText();
}
}
Pozdrawiam serdecznie!