Aktywne Wpisy

WezelGordyjski +45
Kocham życie singla! Chcę ekran projekcyjny, to go sobie maluję na ścianie! Żadnych kłótni o niszczenie salonu. A w szafce czekają już chipsy i batony ( ͡° ͜ʖ ͡°)

Runaway28 +4
Skopiuj link
Skopiuj link

Wykop.pl
http://pastebin.com/RTNK22Vr
Fragment kodu odpowiedzialny za przyjmowanie wiadomości od klienta przez serwer i wyświetlająca ją na GUI.
Problem w tym, że każda następna odebrana wiadomość nadpisuje się na poprzednią. Dzieje się to 12 linijce.
Chciałbym, aby każda wiadomość była wyświetlana pod poprzednią.
Nie proszę o podanie gotowego rozwiazania, ale o wskazówkę, nakierowanie mnie na sposób rozwiazania.
Może coś z ArrayList?
Dzięki z góry Mircy( ͡° ͜ʖ ͡°)
Coś w stylu:
displayText.setText(displayText.getText() + response);- napisałeś nazwę klasy z małej litery :<
- niektóre zmienne są nazwane po polsku inne po angielsku :<
- nazwałeś klasę sendTheMessage z małej litery
- co tu się w ogóle z tymi wątkami odwala? dlaczego wysyłasz wiadomość w osobnym wątku?
- nie jestem pewien czy robienie System.exit(0) a potem pisanie na stderr to najlepsza praktyka
Każdy minus to jeden zabity kotek. Aktualizacja GUI z wielu threadów to zabicie
@PanKamil907: Da się tak z wiadomościami wpisanymi z klawiatury?
- Swing, którego używasz do GUI ma
SwingUtilities.invokeLater(Runnable runnable). To jest JEDYNY dobry sposób na aktualizowanie GUI z wielu wątków. Jak to zawołasz to kod zrunnablezostanie wywołany w wątku odpowiedzialnym za GUI.-
JTextArea, którego używasz dodisplayTextma metodęappend(String). Użyj jej zamiastsetTexti nowa wiadomość nie będzie kasowała poprzednich tylko dopisze się na końcu.- Robienie niestatycznych klas wewnętrznych jest w 99%
Jeśli tak, to muszę zrezygnować z tego rozwiązania, bo przywraca ono problem, który wczoraj rozwiązałem, a mianowicie, program zawieszał mi się po odebraniu pustego pakietu, a teraz , przy takim rozwiązaniu zawiesza się od razu, przy przyjęciu pierwszego pakietu.
display.setTextpowinno byćinvokeLater. Reszta musi być poza. Przecież nie możemy odbierać danych od klienta w wątkuz GUI ;)invokeLater(response);
?