Witam,
mam dwie klasy: klasę główną zawierającą metodę main i klasę dziedziczącą po thread. Potrzebuję w tej drugiej klasie wywoływać metody znajdujące się w klasie głównej. Problem w tym że wątek powoływany jest w metodzie main więc nie mogę przekazać referencji do klasy głównej powołując wątek (błąd: non-static variable this cannot be referenced from a static context..
W jaki sposób rozwiązać ten problem?
Wnioskując bez kodu, stworzyć 3 (lub więcej) klasę i wyciągnąć metody z klasy głównej, wątek tworzyć w 3 klasie, główna klasa odpowiada tylko za uruchomienie aplikacji, metoda main i na tym koniec.
Tylko że ta metoda MUSI być w klasie głównej bo modyfikuje jej atrybuty. Uszczegóławiając: klasa główna rysuje interfejs użytkownika. Ja potrzebuje sposobu aby z poziomu wątku modyfikować atrybuty elementów tego GUI. Wymyśliłem więc że napisze metodę która te atrybuty będzie zmieniać a przy tworzeniu wątku podam tylko referencję do klasy zawierającej tą metodę. Jednak tu pojawia się błąd o którym pisałem wcześniej.
a moze chodzi Ci o coś takiego jak SwingWorker?
http://java.sun.com/developer/technicalArticles/javase/swingworker/#Application
OK z tym już sobie poradziłem. Ale mam w tej chwili inny problem, pracuje właśnie nad odpowiednikiem gadu-gadu i nie bardzo wiem jak w kliencie mogę przedstawić listę kontaktów wraz ze statusem każdej osoby z listy. Może masz jakiś pomysł?
Hmmy, taki pierwszy pomysł to przechowywać w jakieś kolekcji, może map (klucz - kontakt, wartość -dostępność) kontakty podłączonego klienta, które serwer przy podłączeniu się tego klienta pobiera z jakiegoś źródła danych (i odsyła do klienta), a przy wykorzystaniu wzorca obserwator przekazywać dane odnośnie dostępności innych klientów...
ale mi nie chodzi i sposób przetrzymywania daych tylko i icg graficzną reprezentacje.
Co do pierwszego problemu, to przekaż referencje w konstruktorze klasy dziedziczącej po Thread.
Co do drugiego, to użyj Swinga i JTable lub JList.