2010-01-18 6 views
0

이것은 내 코드의 일부이지만 목록을 클릭하면 두 개의 채팅 프레임이 표시되는 이유를 모르겠습니다. 또한 127.0.0.1 IP 주소를 가진 클라이언트/서버 응용 프로그램입니다. 도와 주시겠습니까?두 개의 프레임을 하나의 개체로 열어 두는 것

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

이것은 컴파일되지 않습니다. 짧고, 독립적 인, 올바른 예 * * 만 게시하십시오. 자세한 내용은 http://sscce.org/를 확인하십시오. – Bombe

+0

@ Johanna : 두 번째 메모를 내 대답에 별도의 질문으로 넣어야합니다. **하지만 ** 당신의 문제에 대해 먼저 생각한 다음, google이'java server client'를 위해 생성 한 결과를 읽고, 여전히 질문이 있다면, 정확히 무엇을 성취하려고하는지 설명하십시오. –

답변

0

jList1ValueChanged은 선택 사항이 변경 될 때 두 번 호출됩니다. 한 번 evt.getValueIsAdjusting()true 및 한 번 false.

선택이 변경되었을 때 프레임을 열고 프레임을 여는 데 단추를 추가하지 않거나 목록에서 두 번 클릭하여 반응합니까?

편집 : 당신이 정말로 단지 mouseClicked 이벤트를 사용, 클릭에 반응합니다. 키보드로 선택을 변경하면 무시됩니다.

+0

나는 사용자가 그 list.so의 한 이름을 클릭했을 때 다음 프레임을 열고 싶습니다. ValueChanged를 사용할 수 없다면 어떻게 할 수 있습니까? 덕분에 – Johanna

+0

고마워, 그것 works.but 채팅에 관한 질문이 있습니다. 피터를 클릭하면 지금과 같이 하나의 프레임이 표시됩니다. 그러나 당신은 어떻습니까 (한 프레임이 갑자기 나타납니다)? 메신저에서 채팅하는 것! – Johanna

관련 문제