Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Chat java

  1. #1

    Chat java

    Ciao a tutti,dico subito che non sono molto esperto nel programmare in java,quindi credo che il mio problema sia una banalità..
    Devo fare una chat in java,e per il momento ho scritto il codice del server,ma volevo che sia "esteticamente" più bello... ho aggiunto al frame due TextField,una delle quali servirà a far vedere all'utente i messaggi ricevuti e l'altra quelli inviati, poi ho messo anche un JButton per l'invio del testo... il mio problema e che non ho la minima idea di come farli funzionare ..qui sotto vi metto il codice che ho scritto fin ora..
    codice:
    import java.awt.TextField;
    import javax.swing.*;
    import java.awt.*;
    public class Main
    {  
        public Main() {}   
        public static void main(String[] args)
        {
            JFrame f1=new JFrame("Server Chat");
            f1.setSize(800,600);
            f1.setLayout(null);
            JButton b1=new JButton("Invio");
            f1.add(b1);
            b1.setBounds(720,530,60,30);
            TextField t1=new TextField();
            t1.setBounds(10,10,770,500);
            f1.add(t1);
            TextField t2=new TextField();
            t2.setBounds(10,535,690,20);
            f1.add(t2);
            t1.setEditable(false);//testo n°1 non editabile
    
            t1.getTextListeners();
    /*
            //inizio scrittura NON SO DOVE METTERE QUESTO CODICE!!! 
            String scritta;
            Serverstr servitore=new Serverstr();
            servitore.attendi();
            do
            {
                scritta=servitore.comunica();
                //System.out.println(scritta);
            }
            while (scritta.compareTo("fine")!=0);
            servitore.termina();
            //fine 
    
            */
            
            f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            f1.setVisible(true);
        }
        
    }
    
    import java.net.*;
    import java.io.*;
    public class Serverstr 
    {
       int portaserver=6789;
       Socket client;
       String stringaRicevuta;
       String stringaInviata;
       DataOutputStream outversoclient;
       BufferedReader indalclient;
       ServerSocket server; 
       
       public Serverstr() {}
       public Socket attendi()
       {
            try
            {
                server=new ServerSocket(portaserver);
                System.out.println("Server partito in esecuzione...");
                client=server.accept();
                server.close();
                indalclient=new BufferedReader(new InputStreamReader(client.getInputStream()));
                
                outversoclient=new DataOutputStream(client.getOutputStream());
                
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
                System.out.println("errore durante la connessione");
                System.exit(1);
            }
            return client;
        }
        public String  comunica()
        {
            System.out.println("benvenuto"+'\n');
            BufferedReader tastiera=new BufferedReader(new InputStreamReader(System.in));
            try
            {         
                stringaRicevuta=indalclient.readLine();         
                System.out.println("ricevo la stringa .."+ stringaRicevuta);
           
                System.out.println("inserire stringa");
                stringaInviata=tastiera.readLine();
                outversoclient.writeBytes(stringaInviata+'\n');            
         
            }
            catch(Exception e)
            {
                System.out.println(e.getMessage());
                System.out.println("errore durante la connessione");
                System.exit(2);
            }
            
            return stringaRicevuta;
        }
        public void termina()
        {  
            System.out.println("chiusura connessione"+'\n');
            try 
            {
                client.close();
            } 
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
                
        }
    }

  2. #2
    Piccola correzzione.. ho risolto il problema di prima ma ne ho un altro.. sto facendo la gestione dei thread del client e sembra che java non mi riconosca lista.select(lista.getItemCount()-1); non capisco dove sia l'errore...
    codice:
      
    package prova2;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    
    public class ThreadChatclient implements Runnable
    {
        private List lista;
        private String ipserver;
        Thread me;
        private Socket connessioneChatAlserver;
        private BufferedReader input=null;
        private PrintWriter output=null;
        String mex;
        
        public ThreadChatclient(List lista,String ipserver)
        {
            this.lista=lista;
            this.ipserver=ipserver;
            try//stabilisco la connessione con il server
            {
                connessioneChatAlserver=new Socket(this.ipserver,6789);
                //ottengo i riferimenti agli stream di I/O
                this.input=new BufferedReader(new InputStreamReader(connessioneChatAlserver.getInputStream()));
                this.output=new PrintWriter(connessioneChatAlserver.getOutputStream(),true);
            }catch(Exception e)
            {
                System.out.println(e.toString());
            }
            me=new Thread(this);
            me.start();
        }
    
    
        ThreadChatclient(java.awt.List lista, double d) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
        
        public void run() 
        {
            //aspetto le ricezioni di messaggi e aggiungo i messaggi alla lista
            while(true)
            {
                try
                {
                    //rimango in attesa di un messaggio dal server
                    while((mex=input.readLine())==null){}
                    lista.add(mex);
                    
                    lista.select(lista.getItemCount()-1); 
                }catch(Exception e){}
            }     
        }
        
        //viene invocato ogni qual volta l'utente inserisce un nuovo messaggio
        public void spedisciMessaggioChat(String messaggio)
        {
                try
                {
                    //invio il messaggio al server
                    output.println(messaggio);
                }catch(Exception e){}
            }     
        }
    }

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Stai usando un TextField su un JFrame. Mai mescolare componenti AWT e componenti Swing. MAI.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da war10ck
    sembra che java non mi riconosca lista.select(lista.getItemCount()-1);
    La variabile 'lista' è un java.util.List .... è una collezione .... non c'è un select().
    Intendevi usare un java.awt.List?? Ok ... ma non è quello che hai fatto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie mille per il consiglio Alex'87 ...e grazie mille anke ad andbin.. ora funziona tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.