2016-07-07 5 views
1

이것은 내 첫 번째 게시물이며 Java로 매우 녹색입니다. 이것은 내가 자바 지식을 향상시키기 위해 노력하고있는 것입니다.JList 업데이트/재생성

버튼을 클릭하면 Jlist로 셔플 된 카드 덱이 생성됩니다. 다시 누르면 JList를 새로 고치거나 어떻게 든 다시 만들길 바랍니다. 대신 간단히 이 새 목록을 작성하므로 2 개의 JLists가 생깁니다.

 button1.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 

      cards.choseCards(); //Creates an ArrayList with the suffled cards 
      JList<String> displayList = new JList<>(cards.deck.toArray(new String[0])); 
      frame.add(displayList); 
      frame.pack(); 
      cards.cleanUpDeck(); //Removes all the cards from the ArrayList 
     } 
    }); 
+0

의 두 번째 라인'의 actionPerformed() '메소드는 새로운'JList'를 생성하므로, 버튼을 누를 때마다 새로운'JList'가 프레임에 추가 될 것입니다. 메서드 및 내부 클래스 외부에서 목록을 작성하고 메서드 내에서 데이터를 업데이트 할 수 있습니다. – Dando18

답변

2

여기서 핵심은 스윙 모델 뷰 컨트롤러 모델 뷰 것 (성분) 디스플레이 데이터를 보유하고있다 (그러나 차이점 일) 유사한 구조 의 모델 뷰 타입을 사용한다.

은 당신이하고있는 것은 완전히 새로운 JList를 만드는 것입니다,하지만 당신이 원하는 것은 모델은 기존 및 표시의 JList의을 업데이트하는 것입니다, 그 중 하나 또는이 같은 기존 JList를위한 새로운 모델을 만들 수 있습니다. JLists는 DefaultListModel 객체로서 구현되는 ListModel을 모드로 사용하기 때문에 새로운 DefaultListModel 객체를 작성한 다음 setModel(ListModel model) 메서드를 호출하여이 모델을 업데이트하거나 기존 JList에 삽입하는 것이 좋습니다.

예를 들어

(우리는 당신의 실제 코드가 어떻게 생겼는지 알 수 없기 때문에 많은 추측의을 만들어) 같은 것을 볼 수 있었다 코드 :

button1.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     // create new model for the JList 
     DefaultListModel<String> listModel = new DefaultListModel<>(); 
     cards.choseCards(); //Creates an ArrayList with the suffled cards 

     // add the cards to the model. I have no idea what your deck field looks like 
     // so this is a wild guess. 
     for (Card card : cards.deck) { 
      listModel.addElement(card.toString()); // do you override toString() for Card? Hope so 
     } 

     // Guessing that your JList is in a field called displayList. 
     displayList.setModel(listModel); // pass the model in 
     cards.cleanUpDeck(); //Removes all the cards from the ArrayList 
    } 
}); 
+0

나는 약간 주위에 그것을 비틀 려야했다. 그러나 이것은 단지 내가 필요로했던 것이었다! 당신의 도움을 주셔서 대단히 감사합니다 :-) –