Newsgroup: it.comp.java
Titolo: Sempre sull'E N I G M A (codice sorgente) - Spero vi aiuti

Il codice è ritagliato e commentato il piu' possibile. Serve a dare una
visione generale...
* * * CLASSE CHATHANDLER * * *
public class ChatHandler {
    private ChatFrame gui;
    private PaintFrame paint; //GESTORE DI DISEGNO A CUI MI RIFERISCO IO
    [...]
    public ChatHandler(Socket connection, [...]) {
        this.connection = connection;
        [...]
        paint = new PaintFrame(this);
        remote_paint = new PassivePaintFrame(remoteProfile.getNick());
        createStreams();
        addListeners();
    }
    public void startReading(){
    [...]
        while(true){
              if (input!=null){
                try{
                    ChatObject content = (ChatObject) input.readObject();
                    [...]
                    RAGAZZI QUI RICEVO L'OGGETTO NON AGGIORNATO E LO
VISUALIZZO
                }
                catch(IOException e){}
                catch(ClassNotFoundException ee){}
            }
            [...]
            }
    }
    private void createStreams(){ //CREO GLI STREAMS
        try{
            output = new ObjectOutputStream(connection.getOutputStream());
        }
        try{
            input = new ObjectInputStream(connection.getInputStream());
        }
        [...] //VI RISPARMIO I CATCH
}
    private void addListeners(){
            [....] //CREO I LISTENER PER I BOTTONI. ECCO QUELLO CHE AVVIA IL
PAINT
        gui.getDrawButton().addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent e){
                gui.getDrawButton().setEnabled(false);
                paint.apri();
        }});
    }
     //IL FAMOSO METODO CHE USO DENTRO PAINTFRAME PER INVIARE IL DISEGNO
     public boolean sendObject(Draw content){
        boolean isOk=true;
        try{
            output.writeObject(content);
            output.flush();
        }
        catch(IOException e){
            System.out.println("Error sending object!");
            isOk=false;
        }
        return isOk;
    }
}
* * * CLASSE PAINTFRAME * * *
package communication.gui;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import communication.common.*;
import communication.gui.*;
import communication.object.*;
public class PaintFrame extends WFrame{ //CONSIDERATE WFRAME COME JFRAME
    private Container c;
    private ChatHandler chatHandler; //VERRA' UTILIZZATO PER FARE UN
RIFERIMENTO ALLA
//CLASSE PADRE
    private Draw draw;
    [...]
    public PaintFrame(ChatHandler handler) {
        super("Disegno",[...]);
        draw = new Draw(); //DRAW E' UN SEMPLICE OGGETTO CHE CONTIENE UN
VETTORE
        c = getContentPane();
        c.setLayout(new BorderLayout());
        [...]
        drawingPanel.addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseDragged(MouseEvent e){
                [,...]
                    QUI DENTRO AGGIORNO IL DISEGNO
        drawingPanel.addMouseListener(new MouseAdapter(){
  public void mouseReleased (MouseEvent e){
                [...] //QUI DENTRO CHIAMO L'INVIO DEL DISEGNO (APPENA
RILASCIO IL MUOSE)
                send();
        }});
        c.add(drawingPanel, BorderLayout.NORTH);
        [...]
    }
    private void send(){
       chatHandler.sendObject(draw);
    }
}

 visione generale...
prova a circoscrivere il problema. La GUI non mi sembra c'entri affatto.
Isola la classe che 
serializza l'oggetto su file e quella che lo riceve, il problema sarà
sicuramente li'.
Ad occhio, non mi sembra tu chiuda correttamente gli stream (ma non sarà
certo il motivo), dopo 
il flush per esempio non fai il close. Però sinceramente non mi va di
leggermi tutta 'sto mix di gui 
e logica applicativa, per esempio non capisco cos'è ChatObject.
Ora che ho visto il codice, il bug mi sembra sempre meno probabile ;)
uL
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Il codice č ritagliato e commentato il piu' possibile. Serve a dare una

Scusa ma perchč invece di crucciarti su questo strambo problema non fai 
un pň di design piů sensato per la tua applicaizone? Io la butto li :)
Ciao
Ivan

 ha scritto nel messaggio
news:d4rgb2$nbd$1...@news.newsland.it...


 Ivan

 memoria  oppure dov'è l'oggetto, etc etc??)
qualsiasi IDE ha il suo bel debugger, che, grazie al fatto che le nuove VM
hanno un'interfaccia di 
debug standard (JPDA), ti permette di seguire passo passo cosa succede a
tutti gli oggetti nel tuo 
sw, anche quelli "interni" della VM, e vedere cosa c'è "dentro"
Se vai di editor e javac invece ti tocca accontentarti di jdb, che è una
Proof Of Concept per JPDA 
ma comunque ha la sua utilità pratica
http://java.sun.com/j2se/1.5.0/docs/tooldocs/#basic
ed in particolare:
java.sun.com/j2se/1.5.0/docs/tooldocs/windows/jdb.html
 (windows)
http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/jdb.html
 (solaris e
linux)


 ha scritto nel messaggio
news:d4rp97$8su$1...@news.newsland.it...


 debug-passo-passo :):)
certo che ce l'ha :)
Per quanto riguarda la pesantezza di nb, prova ad eliminare tutti i moduli
che non ti servono 
veramente
