Dorota Nowakowska

Dorota Nowakowska mam wszystko :)

Temat: odświeżanie widoku jTable

hej,
mam bazę danych SQL, którą to pobieram do jTable. mogę dodawać i usuwać wiersze, ale za chiny nie wiem jak odświżyć widok po tych operacjach.. tableModel.fireTableDataChanged(); nie działa.

konto usunięte

Temat: odświeżanie widoku jTable

Wykorzystanie JTable jest niestety dużo trudniejsze, niż np. odpowiadającego mu grida z c#.net. Upewnij się, że dokładnie zapoznałaś się z tutorialem i napisałaś klasę wspierającą ten komponent.
http://download.oracle.com/javase/tutorial/uiswing/com...

Jeśli to zrobiłaś i myślisz, że wszystko jest ok - wklej lub daj linka do kodu:)
Dorota Nowakowska

Dorota Nowakowska mam wszystko :)

Temat: odświeżanie widoku jTable

nie mam zrobionej klasycznej tabeli jak w tym przykładzie. mam tak:

a BookTableModel'u:
private String[] columnNames = { "ID Book", "Autor", "Tytul", "Status", "Typ" };
ArrayList<BookRow> RowList;

BookRow:
public class BookRow {
private String idbook;
private String autor;
private String tytul;
private String typ;
private String status;
BookRow() {
this.idbook = "";
this.autor = "";
this.tytul = "";
this.typ = "";
this.status = "";
}
BookRow(String idbook, String autor, String tytul, String typ, String status) {
this.idbook = idbook;
this.autor = autor;
this.tytul = tytul;
this.typ = typ;
this.status = status;
}
plus gettersy i settersy, toString..

w oknie: tableModel.readFromFile();

no i read FromFile():
public void readFormFile() {

ResultSet rs = SQL.bookList();
String[] headers;
int colCount;
try {
// Execute the query and store the result set and its metadata

ResultSetMetaData meta = rs.getMetaData();
colCount = meta.getColumnCount();

// Now we must rebuild the headers array with the new column names
headers = new String[colCount];
for (int h = 1; h <= colCount; h++) {
headers[h - 1] = meta.getColumnName(h);
}

// and file the cache with the records from our query. This would
// not be
// practical if we were expecting a few million records in response
// to our
// query, but we aren't, so we can do this.
while (rs.next()) {
String idbook = new String(rs.getString(1));
String autor = new String(rs.getString(2));
String tytul = new String(rs.getString(3));
String status = new String(rs.getString(4));
String typ = new String(rs.getString(5));
BookRow r = new BookRow(idbook, autor, tytul, status, typ);
this.RowList.add(r);
System.out.println(r.toString());
}

} catch (Exception e) {
e.printStackTrace();
}
}

no i oczywiście SQL.bookList():
public static ResultSet bookList(){
if (cnct == null) setConnection();
cnct.setSqlStatement("select idbook, autor, tytul, status, " +
"typ from bpl4665.books");
return cnct.executeSQLQuery();
}

konto usunięte

Temat: odświeżanie widoku jTable

Dorota Nowakowska:
A w którym miejscu jest wywoływany fireTableDataChanged, bo jakoś nie widzę?
Dorota Nowakowska

Dorota Nowakowska mam wszystko :)

Temat: odświeżanie widoku jTable

public BooksListWindow() {
super();
tableModel = new BookTableModel();
sorter = new TableRowSorter<BookTableModel>(tableModel);
tableModel.readFormFile();
tableModel.fireTableDataChanged();
initGUI();
}

jest też w akcji przycisku "odśwież"

konto usunięte

Temat: odświeżanie widoku jTable

Dorota Nowakowska:
jest też w akcji przycisku "odśwież"
I po kliknięciu tego przycisku nic się nie dzieje?
Tak w ogóle, to chyba najlepiej by było wywoływać fireTableDataChanged() z wewnątrz modelu, czyli np z metody readFormFile().
Dorota Nowakowska

Dorota Nowakowska mam wszystko :)

Temat: odświeżanie widoku jTable

właśnie nic się nie dzieje... najdziwniejsze jest to, że wchodzi do akcji, ale widok jest ten sam. dopiero jak wyłączę okno i je włączę ponownie, to widać zmiany.

w modelu też próbowałam i też nie działa.

konto usunięte

Temat: odświeżanie widoku jTable

Dorota Nowakowska:
Masz w programie najprawdopodobniej jakiś drobny błąd, ale bez sprawdzenia całego kodu obawiam się, że nie da się go znaleźć.



Wyślij zaproszenie do