הכנתי צ'אט בתוך netbeans ויש לי בעיה
אני לא מבין איך זה אמור לעבוד הצלחתי לעשות כמעט הכל מישהו יודע אם טעיתי במשהו או חסר לי משהו ? הנה הקוד:
קוד:
/* * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication1;
import com.sun.corba.se.pept.transport.ListenerThread;
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.nio.cs.ext.ISCII91;
import java.lang.String;
import javax.swing.*;
/**
 *
 * @author Aviv
 */
public class NewJFrame extends javax.swing.JFrame {
    String username;
    Socket sock;
    BufferedReader reader;
    PrintWriter writer;
    ArrayList<String> userList = new ArrayList(); 
    
    Boolean isConnected = false;
    
    
    /**
     * Creates new form NewJFrame
     */
    public NewJFrame() {
        initComponents();
    }


    private void ListenerThread() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
    
    public class IncomingReader implements Runnable{
        
        public void run(){
                    String stream;
        String[] data;
        String done = "Done", connect = "Connect", disconnect = "Disconnect", chat = "Chat";
        
        
        try {
              while ((stream = reader.readLine()) != null){
            data = stream.split("Y");
            
            if (data[2].equals(chat)){
                
                chatTextarea.append(data[0] + "; " + data[1] + "\n");
                
                
            }else if (data[2].equals(connect)){
                
                chatTextarea.removeAll();
                userAdd(data[0]);
                
            } else if(data[2].equals(disconnect)) {
             
                userRemove(data[0]);
                
                
            }else if(data[2].equals(done)){
                
            }
                userslist.setText("");
                        writeUsers();
                        userList.clear();
            }


            
            } catch (Exception ex) {
                
            } 
        
        
        }
    }
         public void ListenThread() {
         Thread IncomingReader = new Thread(new IncomingReader());
         IncomingReader.start();
    }


        private void userAdd(String data) {
            userList.add(data);
        }


        private void userRemove(String string) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
        


            
        public void writeUsers() {
         String[] tempList = new String[(userList.size())];
         userList.toArray(tempList);
         for (String token:tempList) {


             userslist.append(token + "\n");


         }


     }
    public void sendDisconnect() {
        String bye = (username + "Y YDisconnect");
        try{
            writer.println(bye);
            writer.flush();
        }catch (Exception e) {
            chatTextarea.append("Disconnect Message Failed! \n");
        }
    }
        public void Disconnect() {
            
            try {
                chatTextarea.append("Disconnected!.\n");
                sock.close();
                
            } catch(Exception ex) {
                chatTextarea.append("Disconnect Failed! \n");
            }
            isConnected = false;
            usernamefield.setEditable(true);
        }


    public JTextArea getChatTextarea() {
        return chatTextarea;
    }


    public void setChatTextarea(JTextArea chatTextarea) {
        this.chatTextarea = chatTextarea;
    }


    public JButton getConnectbutton() {
        return connectbutton;
    }


    public void setConnectbutton(JButton connectbutton) {
        this.connectbutton = connectbutton;
    }


    public JButton getDisconnectbutton() {
        return disconnectbutton;
    }


    public void setDisconnectbutton(JButton disconnectbutton) {
        this.disconnectbutton = disconnectbutton;
    }


    public JTextArea getinputtextarea() {
        return inputtextarea;
    }


    public void setinputtextarea(JTextArea inputtextarea) {
        this.inputtextarea = inputtextarea;
    }


    public Boolean getIsConnected() {
        return isConnected;
    }


    public void setIsConnected(Boolean isConnected) {
        this.isConnected = isConnected;
    }


    public JLabel getjLabel1() {
        return jLabel1;
    }


    public void setjLabel1(JLabel jLabel1) {
        this.jLabel1 = jLabel1;
    }


    public JLabel getjLabel2() {
        return jLabel2;
    }


    public void setjLabel2(JLabel jLabel2) {
        this.jLabel2 = jLabel2;
    }


    public JScrollPane getjScrollPane1() {
        return jScrollPane1;
    }


    public void setjScrollPane1(JScrollPane jScrollPane1) {
        this.jScrollPane1 = jScrollPane1;
    }


    public JScrollPane getjScrollPane2() {
        return jScrollPane2;
    }


    public void setjScrollPane2(JScrollPane jScrollPane2) {
        this.jScrollPane2 = jScrollPane2;
    }


    public JScrollPane getjScrollPane3() {
        return jScrollPane3;
    }


    public void setjScrollPane3(JScrollPane jScrollPane3) {
        this.jScrollPane3 = jScrollPane3;
    }


    public BufferedReader getReader() {
        return reader;
    }


    public void setReader(BufferedReader reader) {
        this.reader = reader;
    }


    public JButton getSendbutton() {
        return sendbutton;
    }


    public void setSendbutton(JButton sendbutton) {
        this.sendbutton = sendbutton;
    }


    public Socket getSock() {
        return sock;
    }


    public void setSock(Socket sock) {
        this.sock = sock;
    }


    public ArrayList<String> getUserList() {
        return userList;
    }


    public void setUserList(ArrayList<String> userList) {
        this.userList = userList;
    }


    public String getUsername() {
        return username;
    }


    public void setUsername(String username) {
        this.username = username;
    }


    public JTextField getUsernamefield() {
        return usernamefield;
    }


    public void setUsernamefield(JTextField usernamefield) {
        this.usernamefield = usernamefield;
    }


    public JTextArea getUserslist() {
        return userslist;
    }


    public void setUserslist(JTextArea userslist) {
        this.userslist = userslist;
    }


    public PrintWriter getWriter() {
        return writer;
    }


    public void setWriter(PrintWriter writer) {
        this.writer = writer;
    }
     




    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {


        jLabel1 = new javax.swing.JLabel();
        usernamefield = new javax.swing.JTextField();
        connectbutton = new javax.swing.JButton();
        disconnectbutton = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        userslist = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        chatTextarea = new javax.swing.JTextArea();
        jScrollPane3 = new javax.swing.JScrollPane();
        inputtextarea = new javax.swing.JTextArea();
        sendbutton = new javax.swing.JButton();


        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);


        jLabel1.setText("Username");


        usernamefield.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                usernamefieldActionPerformed(evt);
            }
        });


        connectbutton.setText("Connect");
        connectbutton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                connectbuttonActionPerformed(evt);
            }
        });


        disconnectbutton.setText("Disconnect");
        disconnectbutton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                disconnectbuttonActionPerformed(evt);
            }
        });


        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel2.setText("Online Now!");


        userslist.setColumns(20);
        userslist.setEditable(false);
        userslist.setRows(5);
        jScrollPane1.setViewportView(userslist);


        chatTextarea.setColumns(20);
        chatTextarea.setEditable(false);
        chatTextarea.setLineWrap(true);
        chatTextarea.setRows(5);
        jScrollPane2.setViewportView(chatTextarea);


        inputtextarea.setColumns(20);
        inputtextarea.setRows(5);
        jScrollPane3.setViewportView(inputtextarea);


        sendbutton.setText("Send!");
        sendbutton.setToolTipText("");


        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 321, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(sendbutton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                        .addGap(11, 11, 11)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(5, 5, 5))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(usernamefield, javax.swing.GroupLayout.PREFERRED_SIZE, 133, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(connectbutton)
                        .addGap(26, 26, 26)
                        .addComponent(disconnectbutton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel2)
                        .addGap(59, 59, 59))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(usernamefield, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(connectbutton)
                    .addComponent(disconnectbutton)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 335, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 74, Short.MAX_VALUE)
                            .addComponent(sendbutton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap())
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane1)
                        .addGap(22, 22, 22))))
        );


        pack();
    }// </editor-fold>


    private void usernamefieldActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }


    private void disconnectbuttonActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        sendDisconnect();
        Disconnect();
    }


    private void connectbuttonActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        if(isConnected == false){
            username = usernamefield.getText();
            usernamefield.setEditable(false);
            
            try {
                sock = new Socket("127.0.0.1", 5000);
                InputStreamReader streamreader = new InputStreamReader (sock.getInputStream());
                reader = new BufferedReader(streamreader);
                writer = new PrintWriter (sock.getOutputStream());
                writer.println(username + "Succesfully connected!"); 
                writer.flush();
                isConnected = true;
            } catch (Exception e) {
                chatTextarea.append("Could not connect! Try Again!");
                usernamefield.setEditable(true);
            } 
            ListenerThread();
 
        }else if (isConnected == true) {
            chatTextarea.append("You Are Already Connected! /n");
            
            
        }
        
    }


    /**
     * @param args the command line arguments
     */


    // Variables declaration - do not modify
    private javax.swing.JTextArea chatTextarea;
    private javax.swing.JButton connectbutton;
    private javax.swing.JButton disconnectbutton;
    private javax.swing.JTextArea inputtextarea;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JButton sendbutton;
    private javax.swing.JTextField usernamefield;
    private javax.swing.JTextArea userslist;
    // End of variables declaration


   
    
}