Possuo um combo que contem todos os clientes que são conectados ao meu servidor (aplicação chat), esses clientes são do tipo Socket.
Gostaria de pegar o socket selecionado no combo sem transformar seu tipo para string ou int, pois preciso dele assim para passar como parâmetro em um método que envia mensagem.
Existe algo do tipo?
Sobrescreva o método toString() do Socket, fazendo ele retornar o que você quer que apareça no combo.
Daí na hora de adicionar itens ao combo, adicione o objeto Socket.
Preco, obrigada pela resposta! Mas deu um erro maior do mundo agora:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.net.Socket
at fontes.Servidor.btnEnviarSActionPerformed(Servidor.java:274)
at fontes.Servidor.access$000(Servidor.java:20)
at fontes.Servidor$1.actionPerformed(Servidor.java:71)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Preco, agora deu certo,
adicionei os sockets assim em meu combo:
cmbDestino.insertItemAt(cliente, index++); //onde cliente é o socket
Porém no combo ta aprecendo um montão de informaçoes, mas eu gostaria que mostrasse apenas o ip ou o nome da máquina…Tem como mascarar essas informações na visualização?
ArrayList<Socket> lista = new ArrayList<Socket>();
lista.add(new Socket(){
public String toString(){
return "" + this.getLocalPort();// Aqui você coloca o que quer que apareça no combo, como o IP, por exemplo
}
});
for (Socket s: lista){
jComboBox1.addItem(s);
}
Daí criei um botão, e no actionPerformed desse botão, eu botei: