2013-05-23 3 views
0

JList에 항목을 추가하는 데 도움이 필요합니다. 나는 어떤 "도서관"프로젝트에 종사한다. 그리고 독자를 이미 존재하는 JList에 추가해야합니다. 하지만 추가하려고하면 JList가 재설정되고 모든 독자가 삭제되며 새로운 빈 JList에 독자가 추가되기 시작합니다. 그러나 나는 새로운 목록을 만들 필요는 없지만 이미 존재하는 목록에 추가합니다.기존 JList에 추가

추가 후 새 모델을 만드는 방법에 대해 알고 있지만 어디에서 수정해야할지 모르겠다.

panelHorni = new JPanel(); 
    listModel = new DefaultListModel(); 
    listCtenaru = new JList(listModel); 

    FileInputStream fis = new FileInputStream("myjlist.bin"); 
    ObjectInputStream ois = new ObjectInputStream(fis); 

    listCtenaru = (JList)ois.readObject(); 

    listScroll = new JScrollPane(); 
    listScroll.add(listCtenaru); 


    listCtenaru.setPreferredSize(new Dimension(350, 417)); 
    listCtenaru.setBackground(new Color(238,238,238)); 

    panelHorni.add(listCtenaru); 

리스너 JList의 기본 모델은

public void actionPerformed(ActionEvent e) { 

      String jmeno = pole1.getText(); 
      String prijmeni = pole2.getText(); 

      listModel.addElement(jmeno +" "+ prijmeni); 
      listCtenaru.setModel(listModel); 

      pole1.setText(""); 
      pole2.setText(""); 
      pole1.requestFocus(); 
+1

다중 게시 질문을 종료하십시오. 같은 주제에 대해 다른 질문을 한 것 같습니다 : http://docs.oracle.com/javase/tutorial/uiswing/components/list.html. 동일한 질문에 두 번 대답하는 데 시간을 할애 할 필요가 없습니다. – camickr

+0

이런 종류의 것들을위한 매우 유용한 라이브러리는 Glazedlists입니다 : http://www.glazedlists.com/ 먼저 그 글을 읽으십시오. –

답변

-1

ListModel 당신은 먼저 DefaultListModel에 생성자 내부를 변경해야합니다.

private JList list ; 
private DefaultListModel model; 
public ListModelTest(){//default constructor 
//.... 
list = new JList(); 
model = new DefaultListModel(); 
list.setModel(model); 
//.... 
} 
public void actionPerformed(ActionEvent ev){ 
model.addElement("element"); 
//.... 
} 
+0

아니요, 작동하지 않았습니다. 기존의 JList에 리더를 추가하려고 할 때마다 이전의 JList를 빈 새 것으로 대체합니다. –

1
listModel.addElement(jmeno +" "+ prijmeni); 
//listCtenaru.setModel(listModel); 

기존 모델을 업데이트하려고하는 경우로 setModel() 메소드를 사용할 필요가 없습니다 : 문제가 해결
. 이 작업을 수행하려고한다는 사실은 기존 모델을 업데이트하는 대신 새 모델을 작성 중임을 나타냅니다.

기존 모델을 업데이트하는 작동 예제는 How to Use Lists의 스윙 튜토리얼을 참조하십시오.