[Pytanie] Dodawanie elementów GUI w prorgramie p2p

0

Temat może trochę zawiły ale sam nie wiem jak to szybko opisać. Szukałem tego po necie ale albo źle szukam albo nic nie ma na ten temat.
Piszę klienta sieci P2P i nie wiem jak zrobić żeby po dodaniu pliku do pobierania w wybranym miejscu GUI dodawały się informacje o stanie pobierania pliku, prędkości itd. Coś takiego jak jest w uTorrent czy emule z listą pobieranych plików. Może problem jest banalny ale ja nie wiem jak się za to zabrać, jedyne rozwiązanie jakie przychodzi mi do głowy to wykorzystanie tabeli tylko nie wiem czy to dobry pomysł.

0

Ekhm. Najprościej zwyczajnie samemu napisać obsługę ściągania danych z pliku i odpowiednio okresowo aktualizować postęp w tej pracy. A jeżeli chce się wykorzystać jakieś gotowe klasy, to trzeba obadać czy nie oferują one jakiegoś observera. Jeżeli tak, to problem z głowy, jeżeli nie, to wracamy na początek. :)

0

Źle mnie zrozumiałeś, chodzi mi o to jak w trakcie działania programu dodawać kilka nowych elementów graficznych naraz (te informacje o pobieranym pliku) w oknie programu, spróbuje z tabelą na razie to jedyny sensowny pomysł.

0

Już rozumiem. Można użyć JTable, chociaż ja być może użyłbym JList, do którego pakowałbym specjalizowane komponenty składające się z kilku elementów w wierszu, a jako nagłówek osobny komponent przypominający do złudzenia nagłówek tabeli. Gdybyś pisał w C++, to poradziłbym Ci po prostu rzucenie okiem na źródła Emule'a i skorzystanie z dobrze działających rozwiązań. Tak czy inaczej nie zaszkodzi zaglądnąć jak zostało zrobione to co już działa. W przypadku Javy wystarczy chyba po prostu poczytać dokumentację.

Co do dodawania kolejnych wierszy lub usuwania ich, to sprawa jest prosta wizualizacja tego co robi program może być zrealizowane przez wysyłkę komunikatów z części roboczej (obsługującej prawdziwą wymianę plików) do wątku obsługującego samą wizualizację tego procesu. Operacje takie jak dodanie pliku do kolejki czy usunięcie powinny mieć swój odpowiednik graficzny w postaci dodania/usunięcia elementu graficznego do listy/tablicy widocznej jako komponent graficzny. Część robocza może aktualizować stan informacji związanych z każdym obrabianym plikiem, a część graficzna co jakiś czas sięgać do tych danych i aktualizować zawsrtość elementów graficznych. Można to robić albo timerem, albo co bardziej eleganckie przez popychanie aktualizacji przez część roboczą gdy stan pobierania zmieni się w sposób określony przez Ciebie.
Żeby jednak nauczyć się tego powinieneś najpierw poćwiczyć sobie z wizualizacją na ekranie jakiejkolwiek tablicy struktur, czyli jakiejś prostej bazy danych. Najważniejsze, żebyś nie próbował mieszać obsługi komponentów graficznych z rzeczywistą pracą wykonywaną przez Twój program - ani w tej samej klasie, ani tym bardziej w jednej metodzie. Inaczej dostaniesz spaghetti code, które nadawać się będzie po prostu do śmietnika. Program P2P nie musi mieć interfejsu graficznego, a inteferjs graficzny, który wygląda jak emule czy torrenty nie musi być programem P2P. Jedno nie ma z drugim za wiele wspólnego.
Dzięki takiemu oddzieleniu w przyszłości mógłbyś sobie zrobić interfejs tego samego P2P nawet w 3D. Kwestia fantazji.

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