2010-01-18 5 views
0

cela fait partie de mon code, mais je ne sais pas pourquoi il montre deux cadres de chat pour moi quand je clique sur la liste? aussi c'est une application client/serveur avec l'adresse IP 127.0.0.1. Pourriez-vous s'il vous plaît m'aider?ouverture 2 cadres avec un seul objet

private InformationClass client; 
    private static DefaultListModel model = new DefaultListModel(); 
    private ListSelectionModel moDel; 

/** Creates new form ListFrame */ 
public ListFrame(InformationClass client) { 
    initComponents(); 
    this.client = client; 
    jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 


    fillTable(); 

} 


private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {          

    ChatFrame frame = new ChatFrame(client); 
    frame.setVisible(true); 

} 


public void fillTable() { 
    try { 
     List<InformationClass> list = null; 
     list = Manager.getClientListFromMySQL(); 
     if (list == null) { 

      JOptionPane.showMessageDialog(this, "You should add a person to your list", "Information", JOptionPane.OK_OPTION); 
      return; 
     } else { 


      for (int i = 0; i < list.size(); i++) { 
       InformationClass list1 = list.get(i); 
       model.add(i, list1.getId()); 
      } 

      jList1.setModel(model); 
     } 


    } catch (SQLException ex) { 
     Logger.getLogger(ListFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+1

Cela ne compile même pas. Veuillez poster des exemples courts, autonomes et corrects * seulement *. Consultez http://sscce.org/ pour plus d'informations. – Bombe

+0

@Johanna: Vous devriez mettre votre deuxième commentaire à ma réponse dans une question distincte. ** Mais ** assurez-vous de penser d'abord à votre problème, puis lisez les résultats de ce que google produit pour le client serveur Java et si vous avez encore des questions, expliquez exactement ce que vous essayez d'accomplir. –

Répondre

0

jList1ValueChanged est appelée deux fois, lorsque la sélection change. Une fois avec evt.getValueIsAdjusting()true et une fois avec false. Pourquoi avez-vous ouvert le cadre lorsque la sélection change et n'ajoutez pas de bouton pour ouvrir le cadre, ou réagissez-vous à un double-clic sur la liste?

EDIT: Si vous voulez vraiment réagir au clic, il suffit d'utiliser l'événement mouseClicked. Changer la sélection par le clavier sera alors ignoré.

+0

Je veux que l'image suivante s'ouvre juste quand l'utilisateur a cliqué sur le nom de cette liste. Comment puis-je faire cela si je ne peux pas utiliser ValueChanged? merci – Johanna

+0

Merci, ça marche. Mais j'ai une question qui concerne le chat. quand je clique sur Peter, une image sera montrée pour moi comme maintenant. mais qu'en est-il de toi (un cadre doit être montré pour toi soudainement)? comme faire la conversation dans Yahoo! – Johanna

Questions connexes