2016-07-25 4 views
0

클라이언트 -> 서버 대화방 시스템을 만들었으며 현재 JTextField 내의 버튼 클릭에 현재 표시된 현재 연결된 사용자 목록을 가지고 있습니다. 현재 잘 작동하고 문자열을 표시합니다. 정렬. 그러나, 나는 GUI에 또 다른 컴포넌트를 추가했다. JList이다. 나는 연결된 사용자들로 JList를 업데이트하기 위해 updateUserList라는 메소드를 생성하려고 노력 해왔다. String 형의 DefaultListModel을 사용해 보았습니다 만, JList에는 아무것도 표시되지 않습니다. 이유는 무엇입니까.JList에 문자열 배열 ArrayList 바인딩

public void updateUserList() 
{ 
    model = new DefaultListModel<String>(); 
    for(String usernames : users) 
     model.addElement(usernames); 
    jl_users = new JList<String>(model); 
} 

그러므로 나는 게시물에이를 포함하지 않은,이 모델은 사용자 이름과 jl_users 세계적으로 정의되어 있습니다 :

다음은 내가 만든 updateUserList 방법입니다.

+0

충분한 코드가 없습니다. 처음에는 ** 업데이트 ** 코드가 완전히 새로운 JList 객체를 생성한다는 것이 이상하게 보입니다. 차라리 응용 프로그램에 ** 고정 ** JList가 포함될 것으로 기대합니다. 그리고 그 JList의 모델 만 업데이트한다는 것입니다. 이것이 모델 접근법의 요점입니다. 사용자가 무언가를 업데이트 할 때마다 UI 구성 요소를 버리지 마십시오. 다른 말로하면, 헬프 센터로 가서 "실질적인 질문은하지 마라. 당신이 정말로 당신을 도울 수있는 충분한 정보를 제공하지 않고있다." – GhostCat

+0

내 코드는 새로운 JList 객체를 포함하고있다. – DaveDavidson

+0

새 목록을 작성하여 목록에 새 항목을 추가하지 않고 처음에는 목록을 작성한 다음 나중에 목록의 요소를 추가/제거합니다 단편 짧은 설명 : 이 자료에 대한 자습서를 읽고 싶습니까? https://docs.oracle.com/javase/tutorial/uiswing/components/list.html – GhostCat

답변

0

DefaultListModel을 사용하고 있습니까? 당신은 단순히 목록을 원하는 경우에 단지 바로이

public void updateUserList() 
{ 
    jl_users = new JList<String>(users.toArray(new String[users.size()])); 
} 

또는 같이 사용할 앞으로

jl_users = new JList(users.toArray());