Java swing jTable, wyświetlanie rekordów partiami.

0

Witajcie,

Mam drobny problem z wyswietlaniem rekordów w jTable.

for(int i=0;i<stopsRegisterList.size();i++)
        {
         if((stopsRegisterList.get(i).procesType).equals("Production")) 
            {    
                data[counter][0]=stopsRegisterList.get(i).entryNo;
                data[counter][1]=FindStopReasonCode.FindStopReasonCode(user,password,"description",stopsRegisterList.get(i).stopReasonCode);
                data[counter][2]=stopsRegisterList.get(i).startTime;
                data[counter][3]=FindEmployeeNoData.FindEmployeeNoDataEmployeeNo(user, password, "name", stopsRegisterList.get(i).employeeNoCode);
                data[counter][4]=stopsRegisterList.get(i).machineNoCode;
                data[counter][5]=FindMachineFunctionalPartData.FindMachineFunctionalPartData(user, password, "description",stopsRegisterList.get(i).machineFunctionalPartCode);
                data[counter][6]=stopsRegisterList.get(i).stopReasonDescription;
                data[counter][7]=StopsStatus.findStepsStatusPol(stopsRegisterList.get(i).downtimeStatus); 
                data[counter][8]=FindShiftCode.FindShiftDescription(user, password, stopsRegisterList.get(i).shiftCode);
                data[counter][9]=CheckMachineStatus.CheckMachineStatusForTable(user, password, stopsRegisterList.get(i).entryNo);
                data[counter][10]=CheckMachineStatus.CheckSpeedStatusForTable(user, password, stopsRegisterList.get(i).entryNo);
                if(stopsRegisterList.get(i).downtimeStatus.equals("Closed"))
                    {data[counter][11]=stopsRegisterList.get(i).totalDowntime;}
                else{data[counter][11]=GetTimeStampDifference.getTimeStampDifference("m",stopsRegisterList.get(i).startTime, new Timestamp(System.currentTimeMillis()));}
                counter++;
             }
        }

Dane zasysane są z bazy (to działa sprawnie i szybko), a nstępnie za pomocą wielu z funkcji obrabiane aby nadały się do wyświetlenia, tak jak widać to wyżej. Niestety proces (funkcje) jest dość złożony co sprawia że obrobienie i wyświetleni większej liczby rekordów (ponad 500) do tablei trwa juz kilka sekund. Na czymś taki nie pracuje się dobrze. Skutek jest taki że po kilku (w przysżlości przy większej liczbie danych może nawet to kilkunastu) sekundach mam zaczytaną całą liste do tabeli.

I teraz zastanawiam się jak to rozwiązać, wpadłem na pomysł aby wczytywać dane partiami np. na wstępie pierwsze 100 i dobobic jakis przycisk (np. sprzałkę) cos w stylu "wczytaj kolejne 100 starszych rekordów".

Czy ktoś z was robił juz coś takiego, jak to sie sprawdzi i z czego skożystac najlepiej? Może jakieś inne rozwiązania?

0

Masz 2 rozwiązania:
1 Paginacja - te rozwiązania spokojnie znajdziesz w necie: http://stackoverflow.com/questions/13913988/dynamically-loading-large-amount-of-data-in-jtable
2 Możesz zrobić dynamiczną tabelkę gdzie poprzez nasłuchiwanie pozycji myszki dynamicznie doładowywać co 100 elementów z bazy danych :)

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