Tabulky v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (javax.swing.table.AbstractTableModel: Oprava formátování <code>)
(Přidáno <code>getColumnClass(int)</code>.)
 
(Není zobrazena 1 mezilehlá verze od 1 uživatele.)
Řádka 21: Řádka 21:
  
  
; Abstraktní metody (musí být předefinovány)
+
===  Abstraktní metody (musí být předefinovány) ===
 
Tyto metody volá třída <tt>JTable</tt>. Sdělíme jí tak, jaká data má v tabulce zobrazovat a jak velká má být tabulka.
 
Tyto metody volá třída <tt>JTable</tt>. Sdělíme jí tak, jaká data má v tabulce zobrazovat a jak velká má být tabulka.
 
* <code>int getRowCount()</code>
 
* <code>int getRowCount()</code>
 +
*: Touto metodou třídě <code>JTable</code> sdělujeme, kolik chcme mít v tabulce řádků.
 
* <code>int getColumnCount()</code>
 
* <code>int getColumnCount()</code>
 +
*: Touto metodou třídě <code>JTable</code> sdělujeme, kolik chcme mít v tabulce sloupců.
 
* <code>Object getValueAt(int row, int column)</code>
 
* <code>Object getValueAt(int row, int column)</code>
*: vrací obsah buňky na řádku ''row'' a ve sloupci ''column''
+
*: Třída <code>JTable</code> se nás touto metodou ptá, co má vypsat do buňky na řádku ''row'' a ve sloupci ''column''.
  
  
; Lze předefinovat také další metody
+
=== Lze předefinovat také další metody ===
 +
; Nastavení nadpisů a datového typu sloupců:
 
* <code>String getColumnName(int col)</code>
 
* <code>String getColumnName(int col)</code>
 
*: popis sloupce, tedy co se má zobrazit v hlavičce sloupce
 
*: popis sloupce, tedy co se má zobrazit v hlavičce sloupce
 +
* <code>Class getColumnClass(int col)</code>
 +
*: jaký datový typ se má zapisovat do tohoto sloupce?
 +
*: například <code>Boolean</code> zajistí, že se v&nbsp;tabulce zobrazí zatržítka (checkbox).
 +
 +
; Editovatelnost údajů v tabulce
 
* <code>boolean isCellEditable(int row, int col)</code>
 
* <code>boolean isCellEditable(int row, int col)</code>
 
*: pokud vrátí <code>true</code>, pak bude buňka na řádku <code>row</code> a ve sloupci <code>col</code> editovatelná
 
*: pokud vrátí <code>true</code>, pak bude buňka na řádku <code>row</code> a ve sloupci <code>col</code> editovatelná
Řádka 39: Řádka 47:
  
  
; Jak s třídou pracujeme
+
=== Jak s třídou pracujeme? ===
 
* Typicky vytváříme potomka této třídy.
 
* Typicky vytváříme potomka této třídy.
 
* Náš potomek přidává jako atribut data, která se mají zobrazovat v tabulce.
 
* Náš potomek přidává jako atribut data, která se mají zobrazovat v tabulce.
Řádka 55: Řádka 63:
 
* <code>void fireTableRowsDeleted(int firstRow, int lastRow)</code> &mdash; smazání daných řádků
 
* <code>void fireTableRowsDeleted(int firstRow, int lastRow)</code> &mdash; smazání daných řádků
 
* a další...
 
* a další...
 +
 +
== Příklad použití ==
 +
public void setValueAt(Object obj, int row, int col) {
 +
    Osoba osoba = this.osoby.get(row);
 +
    switch (col) {
 +
        case 0:
 +
            osoba.setJmeno(obj.toString());
 +
            break;
 +
        case 1:
 +
            try {
 +
                osoba.setRokNarozeni(Integer.parseInt(obj.toString()));
 +
            } catch (NumberFormatException ex) {
 +
                ...
 +
            }
 +
            break;
 +
        ...
 +
    }
 +
}
 +
}
  
 
== <code>javax.swing.JScrollPane</code> ==
 
== <code>javax.swing.JScrollPane</code> ==

Aktuální verze z 4. 2. 2019, 12:00


Více viz: Oracle.com > Tutorial > Table.

Obsah

javax.swing.JTable

JTable table = new JTable(new MyTableModel()); 


javax.swing.table.AbstractTableModel



Abstraktní metody (musí být předefinovány)

Tyto metody volá třída JTable. Sdělíme jí tak, jaká data má v tabulce zobrazovat a jak velká má být tabulka.


Lze předefinovat také další metody

Nastavení nadpisů a datového typu sloupců
Editovatelnost údajů v tabulce


Jak s třídou pracujeme?


Pokud se změní data, je to třeba třídě JFrame sdělit

Příklad použití

public void setValueAt(Object obj, int row, int col) {
    Osoba osoba = this.osoby.get(row);
    switch (col) {
        case 0: 
            osoba.setJmeno(obj.toString());
            break;
        case 1: 
            try {
                osoba.setRokNarozeni(Integer.parseInt(obj.toString()));
            } catch (NumberFormatException ex) {
                ...
            }
            break;
        ...
    }
}

}

javax.swing.JScrollPane


Součásti


Použití pro zobrazení tabulky

JScrollPane scrollPane = new JScrollPane(table); 
panel.add(scrollPane);

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje