Utworzenie i wyświetlenie JTable z osobnej klasy w TPanel klasy "roboczej"

0

Nie mogę sobie poradzić z takim problemem, jak poniżej. Co zawalam?

class Run {
JPanel panel = new JPanel();
JTable tab;
Tab t;

   public Run {
      tab = new JTable(2,3);
      int y = t.getColumnCount();  // **i tu mam wynik 3, czyli tabela się utworzyła z 3 kolumnami i 2 wierszami**

      t = new Tab(2,3);
      int x = t.getColumnCount();  // **i tu mam wynik 0, tabela nie jest null'em ale jakby nie utworzył kolumn**

     panel.add(tab); // tablica jest wyświetlana
     panel.add(t); // pustka, nie wyświetla tablicy (co nie dziwne w świetle powyższego)
   }
}

class Tab extends JTable {
   public Tab(int a, int b) {}
}
0

Ty no ale skoro konstruktor Tab(int a, int b) nie robi nic to jakim cudem spodziewasz się, że funkcje z JTable zwrócą Ci coś innego niż 0?

0
szweszwe napisał(a):

Ty no ale skoro konstruktor Tab(int a, int b) nie robi nic to jakim cudem spodziewasz się, że funkcje z JTable zwrócą Ci coś innego niż 0?

Najwyraźniej tego nie rozumiem, stąd pytanie. Sądzę, zapewne błędnie, że skoro wywołuję konstruktor klasy (tu z parametrami) to obiekt tej klasy zostanie utworzony i przypisany pod zmienną. Skoro to działa w JTable tab = new JTable(2,3) to, wg mnie, winno i działać na Tab t = new Tab(2,3) skoro Tab extends JTable. Przecież konstruktor tab wywołany w JTable też nie robi więcej (w omawianym kontekście) niż to co napisałem. Tak to wygląda wg mnie. Pewnie jest inaczej. I tu proszę o pomoc i najlepiej przykład właściwej konstrukcji.

0

No niestety (albo raczej stety bo to zgodne z logiką) ale wywołując konstruktor który nic nie robi nic nie zostanie wykonane.
Tab extends JTable ale nigdzie nie napisałeś, że wywołanie konstruktora Tab (int a, int b) pociągnie za sobą wywołanie tego samego konstruktora z JTable.

0

Rozwiązaniem jest w konstruktorze Tab(2,3) wywołanie konstruktora klasy nadrzędnej, tu JTable z odpowiednimi parametrami? Tu: super(2,3) ? Tak działa.

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