JTable z AbstractTableModel

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:

Kopiuj
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?

GA
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 5 lat
0
Kopiuj
 fireTableRowsInserted(transactionList.size()-1 , transactionList.size()-1 );
0

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

Kopiuj
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:

Kopiuj
public void removeRow(int row) {
	    fireTableRowsDeleted(row, 0);
	    fireTableDataChanged();
	}
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

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

Kopiuj
fireTableDataChanged();

//Dopisane
Po co Ci w metodzie removeRow instrukcja

Kopiuj
fireTableRowsDeleted(row, 0);

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 4x, ostatnio: bogdans
0
0

Jeśli wywołuję:

Kopiuj
fireTableRowsDeleted(0, 2);

lub:

Kopiuj
fireTableRowsDeleted(row, row);

również nic się nie dzieje

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
0

Zgadza się, brakowało:

Kopiuj
transactionList.remove(row);

Dzięki za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.