JTable

Dyskusje na temat Javy.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: JTable

Post przez Morfidon »

Przecież nie masz do dyspozycji takiego konstruktora w klasie JTable:
http://download.oracle.com/javase/1.4.2 ... l#JTable()
kompozyt
Początkujący
Początkujący
Posty: 14
Dołączył(a): piątek, 27 sierpnia 2010, 19:52

Re: JTable

Post przez kompozyt »

Witam !
Od 2 godz. wpatruję się download.oracle.com/javase/1.4.2 ... ml#JTable() oraz Vector i ArrayList.
Nie daje mi to spokoju :?

Zgadzam się z tym że w opisie javax.swing.JTable istnieje konstruktor
JTable ( Vector rowData, Vector columnNames)
ale jet także opis konstruktora
JTable (Object[][] rowData, Object[] columnNames)

ponadto w opisie java.util.ArrayList jest wzmianka
(This class is roughly equivalent to Vector , except that it is unsynchronized.)
(Ta klasa jest z grubsza odpowiada Wektor, chyba że jest zsynchronizowany.)


Cały czas mam na myśli że Vector tworzy tablicę "tak samo" jak ArrayList,
czyli produkt końcowy obu klas jest ten sam - tablica ( jedno lub dwu wymiarowa ) która jest obiektem.

Nie wiem gdzie popełniam błąd w interpretacji tego problemu :| chyba przerzucę się na telenowele,
tam chodziarz nie trzeba myśleć. ;)
\_.?._/
kompozyt
Początkujący
Początkujący
Posty: 14
Dołączył(a): piątek, 27 sierpnia 2010, 19:52

Re: JTable

Post przez kompozyt »

zrobiłem taki przykład (poniżej) który działa bez zarzutu !

Code: Zaznacz cały

String[][] wiersz = new String[10][2];
        for(int i=0;i<10;i++)
            { for (int j=0;j<2;j++)
               { wiersz[i][j] = "  i = "+i+"  j = "+j; }
            }
        String[] kolumna = {"Kolumna zero","Kolumna jeden"};
        JTable table = new JTable(wiersz,kolumna);

i doszedłem do wniosku że wiersz i kolumna muszą być tablicami lub obiektami
co za tym idzie wnioskuję że w wcześniejszym przykładzie gdzie zaistniał problem
wiersz oraz kolumna nie są tablicami ani obiektami - więc czym są :?: :?:
\_.?._/
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: JTable

Post przez Morfidon »

Ten konstruktor

Code: Zaznacz cały

JTable(Object[][] rowData, Object[] columnNames)
chce dwuwymiarową tablice obiektów oraz jednowymiarową tablicę obiektów, a nie zwykły jeden egzemplarz klasy, czyli obiekt. ArrayList to jest klasa z której tworzy się obiekt przypominający tablicę, ale to nie jest "surowa" tablica.

Czyli takie coś by przeszło:

Code: Zaznacz cały

      ArrayList[][] wiersz = null;
      ArrayList[] kolumna = null;
      
      JTable tabelkax = new JTable(wiersz,kolumna);
bo teraz tworzysz tablicę obiektów. Lecz nie ma to sensu.
(This class is roughly equivalent to Vector , except that it is unsynchronized.)
(Ta klasa jest z grubsza odpowiada Wektor, chyba że jest zsynchronizowany.)
z grubsza nie oznacza identyczne ;) Masz konstruktor

Code: Zaznacz cały

JTable ( Vector rowData, Vector columnNames) 
ale nie masz konstruktora:

Code: Zaznacz cały

JTable ( ArrayList rowData, ArrayList columnNames) 
kompozyt
Początkujący
Początkujący
Posty: 14
Dołączył(a): piątek, 27 sierpnia 2010, 19:52

Re: JTable

Post przez kompozyt »

Wielkie dzięki za wytłumaczenie mi tego przypadku.
przepraszam że zawracam głowę takimi pierdołami, ale nie dawało mi to spokoju
po analizie przerobiłem KOD i działa wspaniale :)

Code: Zaznacz cały

private void tablicaarray(){
      String [] kolumna = {"ID","Imie","Nazwisko","Wiek"};
      String zap = "From Tabelauser ORDER BY id ASC";
      Session s = HibernateUtil.getSessionFactory().getCurrentSession();
      s.beginTransaction();
      List<Tabelauser> baza2 = (List<Tabelauser>)s.createQuery(zap).list();
      int rozmiar_w = baza2.size();
      int rozmiar_k = kolumna.length;
      String[][] wiersz = new String[rozmiar_w][rozmiar_k];
      int rek=0;
      for (Tabelauser p : baza2) {
              String pid = (""+p.getId());
              String pim = (p.getImie());
              String pna = (p.getNazwisko());
              String pwi = (""+p.getWiek());
            wiersz[rek][0] = pid;
            wiersz[rek][1] = pim;
            wiersz[rek][2] = pna;
            wiersz[rek][3] = pwi;
          rek++;
      }
      s.getTransaction().commit();
        JTable tabelkax = new JTable(wiersz,kolumna);
        tabelkax.setAutoCreateRowSorter(true); 
        jScrollPane1.setViewportView(tabelkax);
        tabelkax.setVisible(true);
    }
Tak na marginesie to zastanawiam się czy do Object[][] PLECAK = new Object[20][4]; można dopisywać kolejne obiekty w pętli,
np. PLECAK[2][3]=new Boolean(true);
zaraz zacznę eksperymentować.
Jak na razie jestem zadowolony ale jeszcze daleka droga do okiełznania JTable. :d
\_.?._/
kompozyt
Początkujący
Początkujący
Posty: 14
Dołączył(a): piątek, 27 sierpnia 2010, 19:52

Re: JTable

Post przez kompozyt »

działa !! , poszedłem oczywiście nieco dalej lecz ze zrozumieniem treści oczywiście - OK może nie do końca ;) ale dojdę do setna
oto listing

Code: Zaznacz cały

private void tablicaObject(){
      String [] kolumna = {"ID","Imie","Nazwisko","Wiek","Pełnoletni"};
      String zap = "From Tabelauser ORDER BY id ASC"; //ASC DESC
      Session s = HibernateUtil.getSessionFactory().getCurrentSession();
      s.beginTransaction();
      List<Tabelauser> baza2 = (List<Tabelauser>)s.createQuery(zap).list();
      int rozmiar_w = baza2.size();
      int rozmiar_k = kolumna.length;
      Object[][] wiersz = new Object[rozmiar_w][rozmiar_k];
      int rek=0;
      Boolean ppp = true;
      for (Tabelauser p : baza2) {
            tab[rek] = p.getId();
            wiersz[rek][0] = p.getId();
            wiersz[rek][1] = p.getImie();
            wiersz[rek][2] = p.getNazwisko();
            wiersz[rek][3] = p.getWiek();
              if (p.getWiek()<18){ppp = false;} else {ppp = true;}
            wiersz[rek][4] = ppp;
          rek++;
      }
      s.getTransaction().commit();
      //======================== tu zaczyna się sortowanie ===========================================
      TableModel model = new DefaultTableModel(wiersz,kolumna) {
              @Override
              public Class getColumnClass(int column) {
                Class returnValue;
                if ((column >= 0) && (column < getColumnCount())) {
                  returnValue = getValueAt(0, column).getClass();
                } else {
                  returnValue = Object.class;
                }
                return returnValue;
               }
              };
        JTable tabelkax = new JTable(model);
        final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
        tabelkax.setRowSorter(sorter);
        jScrollPane1.setViewportView(tabelkax);
        tabelkax.setVisible(true);
        //====================== tu zaczyna się filtrowanie ==============================================
        jButton2.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
               String text = jTextField6.getText();
               if (text.length() == 0) {
                 sorter.setRowFilter(null);
               } else {
                 try {
                   sorter.setRowFilter(
                       RowFilter.regexFilter(text));
                 } catch (PatternSyntaxException pse) {
                   System.err.println("BŁĄD !!!");
                 }
               }
             }
           });
    }
może się przyda komuś takiemu jak ja w zrozumieniu, chociaż nie wiem czy dobrze robię - zawsze lubiłem się dzielić wiedzą :d
Swojego czasu kolega mówił mi że jestem głupi bo wszystko ( oczywiście nie dotyczy Javy) kładę "kawę na ławę".
A ja na to odpowiedziałem na całym forum chcąc gnojkowi przyrzec nosa:
PYTANIE z mojej strony
"Proszę Państwa - jak myślicie czym różnimy się od zwierzęta ?"
ODPOWIEDŹ - z mojej strony
"Tylko i wyłącznie tym ze potrafimy się dzielić wiedzą i wyciągamy z tego co nam powiedziano lub przeczytaliśmy wnioski w relacji do wcześniejszych wspomnień"
Ot cała ludzkość :( do tego dodajmy zachłanność , grubiaństwo, prymitywizm, małostkowość i co mamy - dopowiedzcie sobie SAMI
\_.?._/
Post Reply