Dificuldade com Swing + Socket

7 respostas
mrgamemr

Olá, Meu primeiro post no forum tenho, 14 anos e gosto muito de programar em java, comecei a desenvolver alguns códigos e estou com problemas!

Gostaria de uma ajuda, na implementação desse código:
package JChat;

/**
 *
 * @author Vanderson Martins do Rosario
 */
    //Bibliotecas usadas

    import java.io.*;
    import java.net.*;
   
    
    
    
public class Main extends Thread{
 
    private static boolean done = false;
    public static void main(String[] args) {
       try{
           
           Socket conexao = new Socket("127.0.0.1", 8080);
           
           PrintStream saida = new PrintStream(conexao.getOutputStream());
           BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
           BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
           
           System.out.println("Entre com seu nome: ");
           
           String meuNome = teclado.readLine();
           
           System.out.println("Entre com sua senha: ");
           
           String senha = teclado.readLine();
           
         
           saida.println(meuNome);
           saida.println(senha);
           
           String s = entrada.readLine();
           
           if(s.equals("false")){
               System.out.print("Senha incoreta");
               return;
           }
           else{
           
           Thread t = new Main(conexao);
           
           t.start();
           
           String linha;
           
           while(true)
           {
               System.out.print("> ");
               linha = teclado.readLine();
               
               if(done)
               {
                 break;
               }
               saida.println(linha);
           }
           }
       }
       catch(IOException e)
       {
         System.out.println("IOException " + e);
       }
    }
    
    //---------------------------------------------------------|
    // Parte da classe que controla o recebimento de mensagens |
    //---------------------------------------------------------|
    
    private Socket conexao;
    
    private Main(Socket s) {
        conexao = s;
    }
    
    
    public void run(){
        try{
            BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
            String linha;
            
            while(true){
                linha = entrada.readLine();
                
                if(linha == null){
                    System.out.println("Conexao encerrada!");
                    break;
                }
                System.out.println();
                System.out.print(linha);
                System.out.print("...>");
                
            }
        }
        catch(IOException e)
        {
            System.out.print("IOException "+e);
            
        }
        done = true;
    }

}

Nesse daqui:

package chatemformagrafica;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Main extends JFrame {

    private JButton Enviar = new JButton("Enviar");
    private JTextArea Chat = new JTextArea("Bem vindo\n\n\n\n\n\n\n\n\n\n\n\n");
    private JTextField Conversa = new JTextField("Escreva aqui!");
    private JScrollPane Scroll = new JScrollPane(Chat);
    private String linha; 
    private String meuNome;
    //Construtor
    public Main() {



        try {


            meuNome = JOptionPane.showInputDialog(null, "Digite seu nome: ");



            String senha = JOptionPane.showInputDialog(null, "Digite a senha do servidor: ");


            addWindowListener(new WindowAdapter() {

                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });

            Enviar.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    linha = Conversa.getText();
                    Conversa.setText("");
                    
                    String s = Chat.getText();
                    Chat.setText(s +meuNome +" digitou: \n" + linha+"\n");
                }
            });

            try {
                getContentPane().setLayout(new BorderLayout());
                Chat.setEditable(false);

                Conversa.setSize(50, 50);
                getContentPane().add(Conversa, BorderLayout.CENTER);
                getContentPane().add(Scroll, BorderLayout.NORTH);
                Enviar.setSize(50, 20);
                getContentPane().add(Enviar, BorderLayout.SOUTH);
            } catch (Exception e) {
                System.out.print("Erro no ContentPane");
            }
        } catch (Exception e) {
            System.out.print("ERRo na hora de criar a conexao!");
        }

    }

    public static void main(String[] args) {
        
        Main Frame = new Main();
        Frame.setTitle("JChar VER 0.1 BGsoft");
        Frame.pack();
        Frame.setSize(450, 400);
        Frame.setVisible(true);
    }
}

Não queria pronto, pois estou com problemas na hora de criar uma conexão , entrada e saída de dados no código em swing, sempre que tento colocar da erro! Deve ter algum jeito de implantar uma conexão no ultimo código, certo?

Obrigado!
:oops:

7 Respostas

Fernando_Generoso_da

Onde está teu servidor, q está escutando na porta 8080???
Tu instanciou apenas um Socket, deveria ter um ServerSocket esperando nessa porta. O socket tenta estabelecer uma conexão e não consegue, pq nao tem nenhum servi~co na 8080.

Fernando Rosa

mrgamemr

A claro foi mau!
Vou postar o codigo do server
meu problema esta em colocar sockets no codigo com swing!

package JChatServer;

/**
 *
 * @author Vanderson Martins
 * 
 * Agradecimentos:
 * 
 * Maria Rosa Panek
 * 
 * Vagner Martins do Rosario
 */


//Bibliotecas

import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;


public class Main extends Thread{
    

    //Codigo Principal 
   
    public static void main(String[] args) {
        
        // Inicio do codigo
        JOptionPane.showMessageDialog(null, "Servidor iniciado");
        //Cria um vetor para amazenar os clientes!
        clientes = new Vector();
        
        //Cria conexão com o servidor
        try{
            
         //Cria um socket com a porta 8800
         ServerSocket s = new ServerSocket(8080);
         
         //Loop Principal
         while(true){
             //Fica aguardando alguem se conectar ao servidor!
             System.out.println("Esperando alguem se conectar...");
             
             Socket conexao = s.accept();
             System.out.println("Conectou!");
             
             //Cria uma nova Thread para tratar essa conexão!
             
             Thread t = new Main(conexao);
             t.start();
             
             //Voltando ao loop, esperando mais alguem se conectar.
         }
         
        }
        catch(IOException e)
        {
            System.out.println("IOException " + e);
        }
    }
    
    //-------------------------------------------------------------|
    // Parte do programa que controla as conexões                  |
    //-------------------------------------------------------------|
    
    //Vetor de clientes conectados
    private static Vector clientes;
    
    //Spcket do cliente
    private Socket conexao;
    // nome deste cliente
    private String meuNome;
    private String senha;

    private Main(Socket s) {
        conexao = s;
    }
    
    // construtor que recebe o socket do cliente

    
    //Execução
    
    public void run()
    {
        try
        {
            //obtendo os objetos que permitem controlar o fluxo
            
            BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
            PrintStream saida = new PrintStream(conexao.getOutputStream());
            
            //espera-se pelo nome do cliente 
            meuNome = entrada.readLine();
            
            senha = entrada.readLine();
             String s;
            
            if(senha.equals("ba142536")){
                System.out.print("Certo...");
                s = "true";
                saida.println(s);
            }
            else{
                s = "false";
                saida.println(s);
            }
            
            if(meuNome == null){
                return;
            }
            
            //uma vez que se tem um cliente conectado
            clientes.add(saida);
            
            String linha = entrada.readLine();
            
            while(linha != null && !(linha.trim().equals("")))
            {
                //Reenvia a linha para todos os clientes conectados 
                sendToAll(saida," disse: ",linha);
                
                //espera por uma nova linha
                
                linha = entrada.readLine();
                
            }
            
            sendToAll(saida,"saiu ","do chat");
            clientes.remove(saida);
            conexao.close();
        }
        catch(IOException e)
        {
            System.out.println("IOException: "+e);
        }
    }
        
        //envia uma mensagem para todos
        
        public void sendToAll(PrintStream saida, String acao ,String linha) throws IOException
        {
            Enumeration e = clientes.elements();
            
            while(e.hasMoreElements())
            {
             //obtém o fluxo de saida de um dos clientes
               PrintStream chat = (PrintStream) e.nextElement();
             //envia para todos
               if(chat != saida){
                   chat.println(meuNome + acao + linha);
               }
            }
            
        }
        
    }
Fernando_Generoso_da

Primeiro, algumas dicas:

Não coloque o mesmo nome em todas as classes. Sugestões: SocketServidor, SocketCliente, ChatGUI…por aí vai.

Outra, não faça as implementações no construtor da classe. Faça métodos de conexão, de desconexão, de envio de mensagens, etc… Assim facilita as coisas.

Para utilizar o socket na tua janela windows, na classe swing crie uma variável do cliente socket, e através dela envie as mensagens. Instancie um objeto do tipo cliente socket, crie um método nessa classe para conexão. Aí na tua interface tu chama esse metodo e conecta o objeto com o servidor. Na classe cliente socket também tu cria um método que envie alguma string (tudo o que você ja fez, mas separado apenas por métodos). aí na classe swing tu pega a string que foi digitada e envia para o servidor através desse método de envio. No final, tu faz a desconexão do socket com o servidor.

Fernando Rosa

mrgamemr

Obrigado vou tentar melhorar o codigo e saparar tudo, depois respondo se deu^^
vlw

mrgamemr

Agora vai ficar mais facio me explicar^^

Codigo novo e com o erro!

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package chatemformagrafica;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class ChatSwing extends JFrame {

    private JButton Enviar = new JButton("Enviar");
    private JTextArea Chat = new JTextArea("Bem vindo\n\n\n\n\n\n\n\n\n\n\n\n");
    private JTextField Conversa = new JTextField("Escreva aqui!");
    private JScrollPane Scroll = new JScrollPane(Chat);
    public String linha;
    public String meuNome;
    public String senha;
    public String TextoDoChat;
    private Socket conexao;
    
    public void Servidor(){
        try{
        conexao = new Socket("127.0.0.1", 8080);
        }
        catch(Exception e){
            System.out.print("poblema com servidor: " + e);
        }
        
    }
    
    public void EscreverNoChat() {
        linha = Conversa.getText();
        Conversa.setText("");
        TextoDoChat = Chat.getText();
        Chat.setText(TextoDoChat + meuNome + " digitou: \n" + linha + "\n");
    }

    public void ReceberNomeSenha() {
         meuNome = JOptionPane.showInputDialog(null, "Digite seu nome: ");
         senha = JOptionPane.showInputDialog(null, "Digite a senha do servidor: ");
    }

    public void botoes() {
        addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        Enviar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                EscreverNoChat();
            }
        });
    }

    public ChatSwing() {
        Servidor();
        
        botoes();
        
        ReceberNomeSenha();
        
        try {
            getContentPane().setLayout(new BorderLayout());
            Chat.setEditable(false);

            Conversa.setSize(50, 50);
            getContentPane().add(Conversa, BorderLayout.CENTER);
            getContentPane().add(Scroll, BorderLayout.NORTH);
            Enviar.setSize(50, 20);
            getContentPane().add(Enviar, BorderLayout.SOUTH);

        } catch (Exception e) {
            System.out.print("Erro no ContentPane");

        }
    }
    public static void main(String[] args) {
        
        ChatSwing Frame = new ChatSwing();
        Frame.setTitle("JChar VER 0.1 BGsoft");
        Frame.pack();
        Frame.setSize(450, 400);
        Frame.setVisible(true);
    }
}

Problema esta aqui:

problema com servidor: java.net.ConnectException: Connection refused: connect

Fernando_Generoso_da

Uma coisa…
Tu iniciou a tua classe servidora?? o ServerSocket?? Acho que o erro está aí…O servidor nao foi inicializado!

O teu método Servidor() na verdade é o socket Client, certo.

RebeccaDias

Olá, eu também estou com dúvidas em conectar meu socket com a minha classe swing. Por exemplo, estou desenvolvendo um sistema onde o administrador cadastra um funcionário (na sua sala de escritório) e quando o restante da equipe da empresa (gerentes, rh, enfim) forem visualizar a lista de funcionário cadastrados, o nome desse funcionário ja deve aparecer pra eles. Seria como se fosse ATUALIZAR DADOS. Consigo fazer todo o cadastro com perfeição, o problema está na hora da exibição para os outros terminais que nao estou conseguindo fazer. Vou enviar parte do meu código, se alguem puder me ajudar, serei grata. Bjoss

*****Formulario SWING

package Visao;

import Controlador.FuncionarioCC;
import descartar.ConexaoBanco;
import DAO.FuncionarioDAO;
import Modelo.Funcionario;
import Socket.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 * @author Rebecca Dias
 */
public class FormFuncionario extends javax.swing.JFrame {
      private ClienteData cliente;
   // private final String ip;
    /**
     * Creates new form FormFuncionario
     */
    public FormFuncionario(){
       // s = new ServidorData();  
        cliente = new ClienteData();
      //  cliente.start();
        initComponents();  
        preencherTabela();
     //   cliente = new ClienteData();
     //   cliente.start();
    }
    
    /**
     * 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() {

        jScrollPane3 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel3 = new javax.swing.JPanel();
        LblNomeFuncionario = new javax.swing.JLabel();
        TxtNomeFuncionario = new javax.swing.JTextField();
        LblCpfFuncionario = new javax.swing.JLabel();
        LblEmailFuncionario = new javax.swing.JLabel();
        TxtEmailFuncionario = new javax.swing.JTextField();
        LblSalarioFuncionario = new javax.swing.JLabel();
        LblDescricaoFuncionario = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        TxtDescricaoFuncionario = new javax.swing.JTextArea();
        LblFuncaoFuncionario = new javax.swing.JLabel();
        DdlFuncaoFuncionario = new javax.swing.JComboBox();
        BtnSalvarFuncionario = new javax.swing.JButton();
        TxtCpfFuncionario = new javax.swing.JFormattedTextField();
        TxtSalarioFuncionario = new javax.swing.JTextField();
        LblIdFuncionario = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        LblCadastroFuncionario = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        LblFiltroFuncionario = new javax.swing.JLabel();
        TxtFiltroFuncionario = new javax.swing.JTextField();
        BtnFiltrarFuncionario = new javax.swing.JButton();
        BtnListarFuncionario = new javax.swing.JButton();
        BtnIncluirFuncionario = new javax.swing.JButton();
        BtnExcluirFuncionario = new javax.swing.JButton();

        jScrollPane3.setViewportView(jTree1);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cadastro de Funcionário");

        jTabbedPane1.setPreferredSize(new java.awt.Dimension(440, 390));

        jPanel3.setPreferredSize(new java.awt.Dimension(413, 210));

        LblNomeFuncionario.setText("Nome");

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

        LblCpfFuncionario.setText("CPF");

        LblEmailFuncionario.setText("E-mail");

        LblSalarioFuncionario.setText("Salário");

        LblDescricaoFuncionario.setText("Descrição");

        TxtDescricaoFuncionario.setColumns(20);
        TxtDescricaoFuncionario.setRows(5);
        jScrollPane2.setViewportView(TxtDescricaoFuncionario);

        LblFuncaoFuncionario.setText("Função");

        DdlFuncaoFuncionario.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Caixa", "Garçon", "Cozinheiro" }));

        BtnSalvarFuncionario.setText("Salvar");
        BtnSalvarFuncionario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnSalvarFuncionarioActionPerformed(evt);
            }
        });

        try {
            TxtCpfFuncionario.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(BtnSalvarFuncionario)
                    .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(jPanel3Layout.createSequentialGroup()
                            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel3Layout.createSequentialGroup()
                                    .addComponent(LblNomeFuncionario)
                                    .addGap(18, 18, 18)
                                    .addComponent(TxtNomeFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(18, 18, 18)
                                    .addComponent(LblCpfFuncionario))
                                .addGroup(jPanel3Layout.createSequentialGroup()
                                    .addComponent(LblEmailFuncionario)
                                    .addGap(18, 18, 18)
                                    .addComponent(TxtEmailFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(63, 63, 63)
                                    .addComponent(LblSalarioFuncionario)))
                            .addGap(18, 18, 18)
                            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(TxtCpfFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(TxtSalarioFuncionario, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)))
                        .addGroup(jPanel3Layout.createSequentialGroup()
                            .addComponent(LblDescricaoFuncionario)
                            .addGap(27, 27, 27)
                            .addComponent(LblIdFuncionario)
                            .addGap(144, 144, 144)
                            .addComponent(LblFuncaoFuncionario)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                            .addComponent(DdlFuncaoFuncionario, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addComponent(jScrollPane2)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(LblNomeFuncionario)
                    .addComponent(TxtNomeFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LblCpfFuncionario)
                    .addComponent(TxtCpfFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(LblEmailFuncionario)
                    .addComponent(TxtEmailFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LblSalarioFuncionario)
                    .addComponent(TxtSalarioFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(LblFuncaoFuncionario)
                    .addComponent(DdlFuncaoFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LblDescricaoFuncionario)
                    .addComponent(LblIdFuncionario))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(BtnSalvarFuncionario)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Cadastro", jPanel3);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, "", null},
                {null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null}
            },
            new String [] {
                "Nome", "CPF", "Função", "Título 4", "Título 5", "Título 6", "Título 7"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTable1);
        jTable1.getColumnModel().getColumn(3).setMinWidth(0);
        jTable1.getColumnModel().getColumn(3).setPreferredWidth(0);
        jTable1.getColumnModel().getColumn(3).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(4).setMinWidth(0);
        jTable1.getColumnModel().getColumn(4).setPreferredWidth(0);
        jTable1.getColumnModel().getColumn(4).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(5).setMinWidth(0);
        jTable1.getColumnModel().getColumn(5).setPreferredWidth(0);
        jTable1.getColumnModel().getColumn(5).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(6).setMinWidth(0);
        jTable1.getColumnModel().getColumn(6).setPreferredWidth(0);
        jTable1.getColumnModel().getColumn(6).setMaxWidth(0);

        jTabbedPane1.addTab("Lista Funcionários", jScrollPane1);

        getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);

        LblCadastroFuncionario.setFont(new java.awt.Font("Arial", 1, 18));
        LblCadastroFuncionario.setText("Cadastro de Funcionário");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(101, Short.MAX_VALUE)
                .addComponent(LblCadastroFuncionario)
                .addGap(97, 97, 97))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(LblCadastroFuncionario)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START);

        LblFiltroFuncionario.setText("Filtrar por");

        BtnFiltrarFuncionario.setText("Filtrar");

        BtnListarFuncionario.setText("Listar");

        BtnIncluirFuncionario.setText("Incluir");

        BtnExcluirFuncionario.setText("Excluir");
        BtnExcluirFuncionario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnExcluirFuncionarioActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(LblFiltroFuncionario)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(TxtFiltroFuncionario, javax.swing.GroupLayout.DEFAULT_SIZE, 326, Short.MAX_VALUE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(BtnFiltrarFuncionario)
                        .addGap(18, 18, 18)
                        .addComponent(BtnListarFuncionario)
                        .addGap(18, 18, 18)
                        .addComponent(BtnIncluirFuncionario)
                        .addGap(18, 18, 18)
                        .addComponent(BtnExcluirFuncionario)
                        .addGap(0, 28, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(LblFiltroFuncionario)
                    .addComponent(TxtFiltroFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(BtnFiltrarFuncionario)
                    .addComponent(BtnListarFuncionario)
                    .addComponent(BtnIncluirFuncionario)
                    .addComponent(BtnExcluirFuncionario))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel2, java.awt.BorderLayout.PAGE_END);

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

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

    private void BtnSalvarFuncionarioActionPerformed(java.awt.event.ActionEvent evt) {                                                     
        try {
            Funcionario objFuncionario = new Funcionario();
            FuncionarioCC objFuncionarioCC = new FuncionarioCC();
        
            objFuncionario.setNome(TxtNomeFuncionario.getText());
            objFuncionario.setCpf(TxtCpfFuncionario.getText());
            objFuncionario.setEmail(TxtEmailFuncionario.getText());
            objFuncionario.setSalario(Double.parseDouble(TxtSalarioFuncionario.getText()));
            objFuncionario.setDescricao(TxtDescricaoFuncionario.getText());
            //DdlFuncaoFuncionario é referente ao campo tipo do banco
            objFuncionario.setTipo((int)DdlFuncaoFuncionario.getSelectedIndex());
            
            objFuncionarioCC.SalvarFuncionario(objFuncionario);
            
        } catch (Exception ex) {
            Logger.getLogger(FormFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                                    

    private void BtnExcluirFuncionarioActionPerformed(java.awt.event.ActionEvent evt) {                                                      
        FuncionarioCC    objFuncionarioCC = new FuncionarioCC();
        Funcionario     objFuncionario  = new Funcionario();

        objFuncionario = this.PreencheObjeto(objFuncionario);
        
        String excluir = "Deseja excluir: " + TxtNomeFuncionario.getText();
        int opcao = JOptionPane.showConfirmDialog(null, excluir, "Exclusão", JOptionPane.YES_NO_OPTION);
        
        if(opcao == JOptionPane.YES_OPTION)
        {
            try {
                objFuncionarioCC.RemoverFuncionario(objFuncionario.getIdFuncionario());
                
                this.preencherTabela();
                JOptionPane.showMessageDialog(null, "Registro excluído com sucesso.");
                jTabbedPane1.setSelectedComponent(jScrollPane1);
                
            } catch (SQLException ex) {
                Logger.getLogger(FormFuncionario.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(FormFuncionario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }                                                     

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        int linha = jTable1.getSelectedRow();
        
        TxtNomeFuncionario      .setText(jTable1.getValueAt(linha, 0).toString());
        TxtCpfFuncionario       .setText(jTable1.getValueAt(linha, 1).toString());
        DdlFuncaoFuncionario    .setSelectedIndex(Integer.parseInt(jTable1.getValueAt(linha, 2).toString()));
        TxtEmailFuncionario     .setText(jTable1.getValueAt(linha, 3).toString());
        TxtSalarioFuncionario   .setText(jTable1.getValueAt(linha, 4).toString());
        TxtDescricaoFuncionario .setText(jTable1.getValueAt(linha, 5).toString());
        LblIdFuncionario        .setText(jTable1.getValueAt(linha, 6).toString());
                
        jTabbedPane1.setSelectedComponent(jPanel3);
    }                                    

    private Funcionario PreencheObjeto(Funcionario objFuncionario)
    {
        objFuncionario.setIdFuncionario(Integer.parseInt(LblIdFuncionario.getText()));
        objFuncionario.setNome(TxtNomeFuncionario.getText());
        objFuncionario.setCpf(TxtCpfFuncionario.getText());
        objFuncionario.setEmail(TxtEmailFuncionario.getText());
        objFuncionario.setSalario(Double.parseDouble(TxtSalarioFuncionario.getText()));
        objFuncionario.setTipo(DdlFuncaoFuncionario.getSelectedIndex());
        objFuncionario.setDescricao(TxtDescricaoFuncionario.getText());

//        if(!TxtCodSocio.getText().trim().equals(""))
//            objCliente.setCodSocio(Integer.parseInt(TxtCodSocio.getText()));
//        else
//            objCliente.setCodSocio(0);
        
        return objFuncionario;
    }
    
    public void preencherTabela()
    {
       //  s = new ServidorData();  
        jTable1.getColumnModel().getColumn(0);//.setPreferredWidth(WIDTH);
        jTable1.getColumnModel().getColumn(1);
        jTable1.getColumnModel().getColumn(2);
        
        //Colunas invisíveis
        jTable1.getColumnModel().getColumn(3).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(4).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(5).setMaxWidth(0);
        jTable1.getColumnModel().getColumn(6).setMaxWidth(0);

        
        DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();
        modelo.setNumRows(0);
        
        try
        {
            FuncionarioCC objFuncionarioCC = new FuncionarioCC(); 

            List<Funcionario> lista = objFuncionarioCC.ListarFuncionario();
            int tamanho = lista.size();

            for (int i = 0; i < tamanho; i++)
            {
                Funcionario objFuncionario = lista.get(i);
                modelo.addRow(new Object[] {objFuncionario.getNome(), objFuncionario.getCpf(),objFuncionario.getTipo(),
                                            objFuncionario.getEmail(), objFuncionario.getSalario(),objFuncionario.getDescricao(),
                                            objFuncionario.getIdFuncionario()});
            }
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null,"Erro ao listar itens" + erro);
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(FormFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(FormFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(FormFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(FormFuncionario.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                    new FormFuncionario().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton BtnExcluirFuncionario;
    private javax.swing.JButton BtnFiltrarFuncionario;
    private javax.swing.JButton BtnIncluirFuncionario;
    private javax.swing.JButton BtnListarFuncionario;
    private javax.swing.JButton BtnSalvarFuncionario;
    private javax.swing.JComboBox DdlFuncaoFuncionario;
    private javax.swing.JLabel LblCadastroFuncionario;
    private javax.swing.JLabel LblCpfFuncionario;
    private javax.swing.JLabel LblDescricaoFuncionario;
    private javax.swing.JLabel LblEmailFuncionario;
    private javax.swing.JLabel LblFiltroFuncionario;
    private javax.swing.JLabel LblFuncaoFuncionario;
    private javax.swing.JLabel LblIdFuncionario;
    private javax.swing.JLabel LblNomeFuncionario;
    private javax.swing.JLabel LblSalarioFuncionario;
    private javax.swing.JFormattedTextField TxtCpfFuncionario;
    private javax.swing.JTextArea TxtDescricaoFuncionario;
    private javax.swing.JTextField TxtEmailFuncionario;
    private javax.swing.JTextField TxtFiltroFuncionario;
    private javax.swing.JTextField TxtNomeFuncionario;
    private javax.swing.JTextField TxtSalarioFuncionario;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTree jTree1;
    // End of variables declaration                   
}
**************************************Socket Cliente
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Socket;

/**
 *
 * @author Rebecca Dias
 */

import Visao.*;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ClienteData {
    private Socket connect;//*
    private ObjectOutputStream out;//*
    private ObjectInputStream in;//*
    private int porta;//*
    private String ip;//*
    private FormFuncionario tela;//*
 //   private TelaMapa mapa;
    private int tipo;//*
    
     public ClienteData(FormFuncionario tela, String ip, int porta, int tipo)
    {
        this.ip = ip;
        this.porta = porta;
        this.tela = tela;
      //  iniciarConexao();
        this.tipo = tipo;
    }

    public ClienteData() {
        //throw new UnsupportedOperationException("Not yet implemented");
    }
      public void iniciarConexao()
    {
        try
        {
            this.connect = new Socket(ip, porta);//inicia a conexao na porta 9047 e no ip informado
            this.out = new ObjectOutputStream(this.connect.getOutputStream());
            this.in = new ObjectInputStream(this.connect.getInputStream());

        }
        catch(SocketException e)
        {
            System.out.println("Servidor nao encontrado!");
            System.exit(1);
        }
        catch(Exception e)
        {
            System.out.println("iniciarConexao - " + e.getMessage());
            System.exit(1);
        }
    }
    public void closeConnection()
    {
        try
        {
            this.in.close();//fecha a conexao com o socket do servidor
            this.out.close();
            this.connect.close();
        }
        catch(Exception e)
        {
            System.out.println("closeConnection: " + e.getMessage());
            System.exit(1);
        }
    }

    public static void main(String args[]) throws ClassNotFoundException {
        try {
            while(true) {
                // cria o socket
                Socket s = new Socket("localhost", 87);
                // cria um stream de entrada
                ObjectInputStream entrada = new ObjectInputStream(s.getInputStream());
                // obtem a data driada remotamente
                FormFuncionario tela = (FormFuncionario) entrada.readObject();
             //   Date data = (Date)entrada.readObject();
             //   System.out.println("Data : " + tela.toString());
                // fecha o stream
                entrada.close();
                // fecha o socket
                s.close();
            }
        } catch (UnknownHostException ex) {
            Logger.getLogger(ClienteData.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(ClienteData.class.getName()).log(Level.SEVERE, null, ex);
        }



    }

    public void start() {
     //   throw new UnsupportedOperationException("Not yet implemented");
    }
}
*******SERVIDORSOCKET
package Socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;



public class ServidorData  {

    public static void main (String args[]) {
        try{
            // cria um servidor de socket
            ServerSocket server = new ServerSocket(87);
            int cont = 0;
            while(true) { // rodando indefinidamente
                System.out.println("esperando o cliente " + cont++);
                // espera por requisições. retorna o socket do cliente que
                // solicitou uma conexao
                Socket s = server.accept();

                // processa a requisição em uma thread separada e volta a esperar
                // requisicoes
                ThreadProcessa t = new ThreadProcessa(s);
                Thread thread = new Thread(t);
                thread.start();
            }

        } catch (IOException ex){
            ex.printStackTrace();
        }
    }

  
}
******************THREAD
package Socket;

import Visao.*;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ThreadProcessa implements Runnable {
    Socket s;

    public ThreadProcessa(Socket s) {
        this.s = s;
    }

    public void run() {
        try {
            // cria a data a ser enviada
            FormFuncionario tela = new FormFuncionario();
          //  Date data = new Date();
            // cria o stream de saída
            ObjectOutputStream saida;
            // espera 4s (simula processamento pesado)
            Thread.sleep(4000);
            // obtem o stream do socket do cliente
            saida = new ObjectOutputStream(s.getOutputStream());
            // envia a data via stream
            saida.writeObject(tela);
            // fecha o stream
            saida.flush();
            saida.close();
            // fecha o socket
            s.close();
        } catch (IOException ex) {
            Logger.getLogger(ServidorData.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InterruptedException ex) {
                Logger.getLogger(ServidorData.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Se alguem puder me ajudar, como tenho que fazer essa conexao com o swing, serei grata!!!

Criado 6 de agosto de 2008
Ultima resposta 12 de set. de 2012
Respostas 7
Participantes 3