Wątki i coś więcej ...

0

Witam,
mam takie pytanie ale najpierw przedstawię ogólny zarys problemu:

Mam program serwera i klienta. Klient podłącza się do serwera, po czym otwiera jakiś dokument i edytuje go. Po stronie serwera widoczny jest dokument ów klienta i widoczne zmiany jakie wprowadza (tekst w jTextArea) i ok, ale gdy podłączy się nowy klient ze swoim dokumentem to serwer widzi te dwa dokumenty ale zmiany tekst zmienia się tylko u tego nowego... I tu moje pytanie czy aby zmiany zachodziły we wszystkich dokumentach widzianych po stronie serwera to czy kolejne dokumenty powinny być dodawane do jDesktopPane (bo w tym oknie po stronie serwera dodawana są internalFrame-sy) jako nowe wątki czy jakoś tak?

Albo inaczej napiszę: Klient wysyła do serwera paczkę która zawiera nazwę dokumentu i tekst. Zadaniem serwera jest odebranie wiadomości i umieszczenie tekstu w odpowiednim JInternalFrame. Działa u mnie tylko w nowo utworzonym dokumencie. Gdy jest ich wiele to tekst prawidłowo trafia do ostatnio dodanego JInternalFrame a do poprzednich nic nie trafia...

Albo może ktoś pomorze w takim czymś:

Mam taką klasę:

public class DocWindowFrame extends JInternalFrame {
  private static JTextPane jTextPane1;
  public DocWindowFrame() {
    initComponents();
  }

  private void initComponents() {...}
}

I mam kolejną klasę która zawiera obiekt JDesktopPane a do niego dodane np. 5 obiektów typu DocWindowFrame. I teraz chcę wysłać do wszystkich ten sam tekst... Jak to zrobić?

0

I jeszcze mam takie pytanie:
Czy jak tworze nowy obiekt przez new DocWindowFrame(...) dodaję go do jDestkopPane, po czym tworze też przez new DocWindowFrame(...) kolejny obiekt i też go dodaje do DesktopPane, i tak kilka razy to czy mogę jakoś odwołać się do wcześniej utworzonych? Np. jest taka metoda getAllFrames() która zwróci mi listę wszystkich dodanych wcześniej obiektów ale jak dodać do konkretnego DocWindowFrame (który jest rozszerzeniem JInternalFrame i zawiera pole jTextArea) tekst do ów jTextArea?

0
Marcin_22 napisał(a)

I jeszcze mam takie pytanie:
Czy jak tworze nowy obiekt przez new DocWindowFrame(...) dodaję go do jDestkopPane, po czym tworze też przez new DocWindowFrame(...) kolejny obiekt i też go dodaje do DesktopPane, i tak kilka razy to czy mogę jakoś odwołać się do wcześniej utworzonych? Np. jest taka metoda getAllFrames() która zwróci mi listę wszystkich dodanych wcześniej obiektów ale jak dodać do konkretnego DocWindowFrame (który jest rozszerzeniem JInternalFrame i zawiera pole jTextArea) tekst do ów jTextArea?

Może komuś się przyda:

   <code> JInternalFrame [] frames = jDesktopPane1.getAllFrames();      
   
    for (int i = 0; i<frames.length; i++)  {
        SendTxtAllFrames(frames[i]);
    }

private void SendTxtAllFrames(Container optionPane) {
Component[] c = optionPane.getComponents();

     for(int i = 0; i < c.length; i++) {
         if(c[i] instanceof JTextPane ) 
           ((JTextPane)c[i]).setText("1234");
         if(c[i] instanceof Container)
           SendTxtAllFrames((Container)c[i]);         
   }      
}

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