Ciao a tutti, ho creato due piccoli programmini per provare la gestione dei socket con java, però ho un piccolo problema quando tento di mostrare l'input ricevuto sul server dal client, posto il codice per semplificare le cose:

codice:
public void inc_msg(String msg){
          label= new JLabel (msg);
          panel=new JPanel();
          panel.add(label);
          panel.setVisible(true);
          frame.add(panel);

          }
Questo metodo ha il compito di modificare il label nella finestra e dargli il valore passato come string, ma quando gli passo il valore qui:

codice:
public String server_work(){
        String line = null;
         try{
       //Accetto le eventuali connesioni dei client
           clientSocket = service.accept();
        }
       catch (IOException exc){
       //Se si verifica un eccezione la mostro all'esterno
           System.out.println(exc);
       }
        //Indico le azioni da eseguire quando il server lavora
        DataInputStream input;
        PrintStream output;

        try{
            input= new DataInputStream(clientSocket.getInputStream());
            output= new PrintStream(clientSocket.getOutputStream());

            while(true){
                line = input.readLine();
                output.println(line);
                interfaccia.inc_msg(line);
                System.out.println(line);
            }
        }
            catch(IOException exc){
                System.out.println(exc);
        }
            return line;
            }
Non modifica il label.
Qual è il problema?
Sperando di essermi fatto capire, vi ringrazio in anticipo per l'aiuto.