Inserir Vector em uma lista

2 respostas
J

Alguém pode me ajudar, creio que seja simples,

gostaria de inserir um dado que esta armazenado em um Vector em uma lista .Tentei e não consegui deem uma olhada no código:

[list]clientes = new Vector();
listModel1.insertElementAt((String)clientes.firstElement(),0);[/list]:tosco:

Não ocorre nenhum erro de compilação;

tentei também:

[list]clientes = new Vector();

String x = (String)clientes.get(0);

listModel1.addElement(x);  [/list]  :oops:

Muito Obrigado

2 Respostas

R

Olá,

Do primeiro jeito nunca ia dar certo, mas o segundo deveria funcionar.

Pq vc nao posta o código de verdade pra gente dar uma olhada?

Abraços!

J

Primeiramente muito Obrigado.Segue abaixo o código:
O servidor para, isto é, não acontece reação nenhuma.mas os clientes continuam enviando mensagem e conectando tb.( programa de mensagem instantânea.

//TCPServerThreads.java by Ledón, fev/2005

import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;  //para acesso às classes Socket e ServerSocket

import java.awt.<em>;

import java.awt.event.</em>;  //para atenção a eventos

import javax.swing.<em>; //acceso aos componentes de interface do pacote Swing

import javax.swing.border.</em>;  //para utilizar painéis com bordas

import java.util.*;

public class TCPServerThreads extends JFrame implements ActionListener{ /implements ActionListener/

//servidor para a comunicação:
private static ServerSocket serverSocket;
private static Vector clientes; //para armazenar os clientes conectados

//objetos para a interface:

private static JTextArea t1 = new JTextArea(15,30);

private JScrollPane scroller = new JScrollPane(t1);

//private JPanel p1 = new JPanel();

private JLabel l1 = new JLabel(Digite seu nome e depois mensagens (ou fim):);

private JTextField t2 = new JTextField(18);

private JButton b1 = new JButton(Enviar a todos);

private JButton b2 = new JButton(Enviar a);

private JButton b3 = new JButton(Fechar Um);

private JButton b4 = new JButton(Fechar Todos);

private JPanel

p1 = new JPanel(),

p2 = new JPanel(),

p3 = new JPanel(),

p4 = new JPanel(),

p5 = new JPanel();

private String texto="";

DefaultListModel listModel1 = new DefaultListModel();

JList list1 = new JList(listModel1);

JScrollPane scroll3 = new JScrollPane(list1);
public void enviarATodosDesdeServidor(String quem, String mensagem) throws IOException {

 for (Enumeration e = clientes.elements() ; e.hasMoreElements() ;) {

    UmCliente cli = (UmCliente) e.nextElement();

    cli.outToClient.writeObject(quem + ": " + mensagem);

 }

 }
public TCPServerThreads(){

super(“Aplicativo Servidor”);

Container cp = getContentPane();

cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS));

p1.setBorder(new TitledBorder("  Mensagens  “));

p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));

p1.add(scroller);

<a href="//cp.add">//cp.add</a>(p1);

<a href="//p1.setBorder">//p1.setBorder</a>(new TitledBorder(”  Mensagens  “));

// p1.setLayout(new BoxLayout(p1, BoxLayout.Y_AXIS));

p2.setBorder(new TitledBorder(”  Texto para envio  “));

p5.setLayout(new BoxLayout(p5, BoxLayout.X_AXIS));

p3.setBorder(new TitledBorder(”  Para enviar  “));

p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));

p4.setLayout(new BoxLayout(p4, BoxLayout.X_AXIS));

p4.setBorder(new TitledBorder(”  Usuários Conectados  “));

p3.setBorder(new TitledBorder(”  Para enviar  "));

p1.add(scroller);

p2.add(l1);

p2.add(t2);

p5.add(p2);

p5.add(p3);

p3.add(b1);

p3.add(b2);

p3.add(b3);

p3.add(b4);

p4.add(scroll3);

<a href="//listModel1.addElement">//listModel1.addElement</a>(umCliente);

listModel1.addElement(“cadeira”);

listModel1.addElement(“copo”);

listModel1.addElement(“guardanapo”);

listModel1.addElement(“janela”);

listModel1.addElement(“toalha de mesa”);

cp.add(p1);

<a href="//cp.add">//cp.add</a>(p2);

<a href="//cp.add">//cp.add</a>(p3);

cp.add(p5);

cp.add(p4);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

}

public static void main(String argv[]) throws Exception {
System.out.println(“Iniciando o servidor…”);

TCPServerThreads janela = new TCPServerThreads();
	janela.setSize(400, 400);
	janela.setTitle(" Aplicativo Servidor");
	janela.setVisible(true);
	//registramos um tratador para o evento windowClosing:
	janela.addWindowListener(
		new WindowAdapter() {
		  public void windowClosing(WindowEvent e) 
		  {
		  	try{
		  	  // fecha a conexão do cliente e os objetos de E/S:
       		  System.out.println("Encerrando o servidor...");
       		  FecharSockets();
            }catch(Exception exc){
            }
			System.exit(0);
		  }
    	}//fim da classe interna anônima
    );//fim do parâmetro de addWindowListener

    [i][b]clientes = new Vector();[/b][/i]

// JOptionPane.showMessageDialog(null,clientes.firstElement());

serverSocket = new ServerSocket(5000); //usamos porta 5000
    while(true){
    	//criamos um cliente, enviando como parâmetros
    	//o objeto servidor e o objeto da área de texto 
    	//para mensagens:
    	UmCliente cliente = new UmCliente(serverSocket,t1,clientes);
    	clientes.add(cliente);
    	//System.out.println("Clientes:"+cliente);
    	cliente.start();
    	
    }

}

public static void FecharSockets(){

for (Enumeration e = clientes.elements() ; e.hasMoreElements() <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> {

System.out.println("\nDestiva um cliente ativo");

UmCliente cli = (UmCliente) e.nextElement();

}

for (Enumeration e = clientes.elements() ; e.hasMoreElements() <img src="https://https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> {

UmCliente cli = (UmCliente) e.nextElement();

cli.desativa();  //desativamos cada Thread (objeto de UmCliente)

}

clientes.removeAllElements();//esvaziamos o vetor de clientes

}//de FecharSockets
public void actionPerformed( ActionEvent event )
{
	    if ( event.getSource() == b1 ){
	    	
	    	    	
	    	

        try{
        	[i][b]String x = (String)clientes.get(0);
	    	listModel1.addElement(x);  [/b][/i]	
           
           enviarATodosDesdeServidor("Servidor diz:", t2.getText());
           //Vector.parsevector(clientes); 
           //listModel1.addElement("oi");
           //listModel1.addElement(x);
           //listModel1.insertElementAt((String)clientes.firstElement(),0);
           //listModel1.insertElementAt(t2.getText(),0);
            t2.setText("");
             //return (TipodeRetorno) teste.firstElement();       

        }

        catch(Exception e) { }

     }


	    
	    
	     if ( event.getSource() == b2 ){
	    JOptionPane.showMessageDialog(null," Botão B2 - enviar a um");    	    	
	    	   	    	
	    }
	    if ( event.getSource() == b3 ){
	    JOptionPane.showMessageDialog(null," Botão B3 - fechar  um");    	    	
	    	  	    	
	    }
	    if ( event.getSource() == b4 ){
	    JOptionPane.showMessageDialog(null," Botão B4 - fechar todos");    	    	
	    		
	    }
	    
}




}

class UmCliente extends Thread { //Observe, classe derivada de Thread

public ObjectOutputStream outToClient;
  private ObjectInputStream inFromClient;
  private Socket socket;
  public String nomeCliente="";
  private JTextArea textoSaida; //para acesso à tela do Server
  private boolean ativa;
  private Vector clientes;
  private String vetorcliente[];
  private int p =0;

  public UmCliente(ServerSocket serverSocket, JTextArea inJTextArea, Vector inClientes) { 
    try{
      socket = serverSocket.accept();
      outToClient = new ObjectOutputStream(socket.getOutputStream());
      outToClient.flush();
      inFromClient = new ObjectInputStream(socket.getInputStream());
      textoSaida = inJTextArea;
      ativa=true;
      clientes = inClientes;
    }catch (Exception e1){
    }
  }

  public void desativa(){
  	try{
      outToClient.writeObject("FIM Server");
      outToClient.flush();
    } catch(Exception e3){
    }
  	ativa = false;
  }
  
  public void Mensagem(String txt){
    textoSaida.setText(textoSaida.getText() + txt + "\n");
  }
  
  public void run() 
  { 
   String texto = "\nUm aplicativo cliente em " + socket.getInetAddress() + " - " + socket.getInetAddress().getHostName() + " tenta se comunicar\n";
   Mensagem(texto); //mensagem para a tela do servidor
   
   
   try{
     do{ // ciclo de espera pela conexão de algum cliente
	    sleep(150);  //esta Thread "dormirá" 150 milisegundos
        texto = (String) inFromClient.readObject(); // lê uma linha do cliente
        if(nomeCliente==""){
        	nomeCliente = texto;
        	texto = "se conectou.....";
        	
        }
         //vetorcliente[p];
         //vetorcliente[p]+= nomeCliente;
          //p++;
         //for (int h=0; h&lt;3; h++)             
         //System.out.println("Nome do Cliente..."+vetorcliente[p]);
         System.out.println("Nome do Cliente..."+nomeCliente);
    

        enviarATodos(nomeCliente,texto); //mensagens para os clientes
        Mensagem(nomeCliente + ": " + texto); //mensagem para a tela do servidor
        
        

     } while (ativa);

     // fecha a conexão com o servidor e os objetos de E/S:
     enviarATodos(nomeCliente,"se desconectou....."); //msg para os clientes
     Mensagem(nomeCliente + ": se desconectou..."); //mensagem para a tela do servidor
     outToClient.writeObject("FIM"); //para que a tela do cliente feche
     clientes.remove(this);  //se auto-elimina da lista de clientes
     socket.close();
     inFromClient.close();
     outToClient.close();
    } catch(Exception e2){
    }//do try
  }//fim do método run()
public void enviarATodos(String quem, String mensagem) throws IOException {

for (Enumeration e = clientes.elements() ; e.hasMoreElements() <img src="https://www.guj.com.br/images/emoji/twitter/wink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> {

UmCliente cli = (UmCliente) e.nextElement();

cli.outToClient.writeObject(quem + ": " + mensagem);

}

}
public void enviarATodosMenosEu(String quem, String mensagem) throws IOException {

//não estamos usando este método, mas poderia ser interessante

for (Enumeration e = clientes.elements() ; e.hasMoreElements() <img src="https://www.guj.com.br/images/emoji/twitter/wink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> {

UmCliente cli = (UmCliente) e.nextElement();

if(cli!=this)cli.outToClient.writeObject(quem + ": " + mensagem);

}

}

}//fim da classe UmCliente

Criado 17 de abril de 2005
Ultima resposta 21 de abr. de 2005
Respostas 2
Participantes 2