Odświeżanie tabeli (jTable - repaint())

0

Witam!

Podobne tematy już się na forum pojawiały, ale ciągle nie mogę dojść do sedna sprawy, więc może teraz ktoś mi to wytłumaczy dokładniej.

Kłopot w tym, że chciałbym zrobić przycisk odpowiadający za odświeżanie tabeli. W dokumentacji Javy znalazłem wbudowaną metodę repaint(), którą wrzuciłem pod przycisk i dla elementów edytowanych w trakcie działania programu. I teraz moje pytanie, ponieważ tabela w trakcie działanie wyświetla tylko tyle miejsc ile miała na wejściu (tzn. jak dodam nowy wiersz to zobaczę go tylko podczas działania programu jeżeli usunę jeden z poprzednich)

Poniżej zamieszczam kod metody podpiętej pod przyciski i model mojej tabeli:

Przycisk:

public void kliLista() throws InterruptedException { 
	
    jTable1.repaint();  
}

Model tabeli:


import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;


public class ModelTabeli extends AbstractTableModel
{
    
    private ArrayList<Klient> klienci;
    
    private String [] nazwyKolumn = {"IDklienta","Imie","Nazwisko","Adres"};

    public ModelTabeli(ArrayList<Klient> klient) { klienci = klient; }
    
    public Object getValueAt(int row,int col)
    {
       
        switch(col)
        {
            case 0:
                return klienci.get(row).getIDklienta();
            case 1:
                return klienci.get(row).getImie();
            case 2:
                return klienci.get(row).getNazwisko();
            case 3:
                return klienci.get(row).getAdres();
                
        }
        return null;
       
        
    }
   

    public int getRowCount() {
        int ilosc;
        
        ilosc = klienci.size() + 3;
        return klienci.size();
    }

    public int getColumnCount() {
        return 4;
    }
    
    @Override
    public String getColumnName(int kolumna){
                return nazwyKolumn[kolumna];
    }
}

Dzięki i pozdrawiam ;-P

0
public int getRowCount() {
        int ilosc;
       
        ilosc = klienci.size() + 3;
        fireTableDataChanged();
        return klienci.size();
    }

Prawdopodobnie tego brakowało. Jeżeli zmieniamy rozmiar tablicy, to trzeba to odpowienio zaznaczyć - powiadomić obserwatorów modelu (tabelę), że zaszły zmiany w liczbie rzędów generując to zdarzenie.

0

Wielkie dzięki ;-P

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