JTable z AbstractTableModel

0

Piszę program, którego interfejs opiera się na zakładkach (tzn. JTabbedPane). Pierwsza zakładka - transakcje, druga - kategorie.

W zakładce transakcje tabela, oraz przycisk "Dodaj" , który wywołuje:
transactionTableModel.addRow(exampleTransaction);
gdzie transactionTableModel jest modelem tabeli dziedziczącym po AbstractTableModel. addRow realizuję tak:

public void addRow(Transaction rowData)
    {
	transactionList.add(rowData);
        fireTableRowsInserted(transactionList.size() , transactionList.size() );
    }

Dodaje do tabeli, ale nie widać nowych wpisów. Widać je dopiero jak przejdę na zakładkę kategorie i ponownie na transakcje. Brakuje jakiegoś odświeżenia?

0
 fireTableRowsInserted(transactionList.size()-1 , transactionList.size()-1 );
0

Dzięki, działa. Pojawia się kolejny problem przy kasowaniu. Obsługa przycisku kasowania:

System.out.println(" Selected row: " + table.getSelectedRow()); //wyświetlam, aby sprawdzić czy oznacza prawidłowy wiersz
transactionTableModel.removeRow(table.getSelectedRow());

Funkcja kasująca w modelu:

public void removeRow(int row) {
	    fireTableRowsDeleted(row, 0);
	    fireTableDataChanged();
	}
1

A jeśli chcesz uniknąć problemów z liczeniem numerów wierszy, to

fireTableDataChanged();

//Dopisane
Po co Ci w metodzie removeRow instrukcja

fireTableRowsDeleted(row, 0);
0

Jeśli wywołuję:

fireTableRowsDeleted(0, 2);

lub:

fireTableRowsDeleted(row, row);

również nic się nie dzieje

0

Coś dzisiaj szybciej piszę niż myślę. W Twoim kodzie nie ma instrukcji usuwającej, jest tylko (nieprawdziwa) informacja dla obiektu wyświetlającego, że coś usunięto.

0

Zgadza się, brakowało:

transactionList.remove(row);

Dzięki za pomoc

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