2015-01-17 3 views
0

나는 창 응용을하고있다. JScrollPane을 만들고 String []으로 채워야합니다. 문제는 새로 고침해야한다는 것입니다.스윙. JScrollPane을 JList로 채우기

응용 프로그램을 시작할 때 빈 JScrollPane이 필요하고 아무 버튼이나 누르면 JScrollPane이 새로 고쳐집니다.

String[] newContent = (method generate and return the new array); 
    listDic = new JList(newContent); 
    scrollPaneDic = new JScrollPane(listDic); 

중요 : 나는 내용을 새로 고쳐야 할 곳

// Empty JScrollPane 
    scrollPaneDic = new JScrollPane(new JList()); 
    scrollPaneDic.setBounds(225, 75, 200, 170); 

    // Layout 
    frame.getContentPane().setLayout(null); 
    frame.getContentPane().add(lblPalabrasDiccionario); 
    frame.getContentPane().add(scrollPaneDic); 

그리고 버튼의 actionListener에

이다 : 나는 모든 코드가

, 나는 내용 만 새로 고침이 필요 scrollPaneDic을 및 listDic은 (는) 글로벌입니다

감사합니다.

+0

[this] (http://stackoverflow.com/questions/4262669/refresh-jlist-in-a-jframe) – Titus

답변

2

변수의 값을 변경해도 어떤 식 으로든 구성 요소의 상태에는 영향을주지 않습니다. 컴포넌트 메소드를 호출해야합니다. 그렇게 할 때까지, 프레임은 새로운 JScrollPane을 생성했다는 것을 알 수있는 방법이 없습니다.

사실, 새로운 JScrollPane 또는 새로운 JList를 생성해서는 안됩니다. 강력 특히 JScrollPane의를 위해, 권장하지 않습니다 널 레이아웃을 사용하여, 또한

JList listDic = (JList) scrollPaneDic.getViewport().getView(); 
listDic.setListData(newContent); 

대신, 기존의 JList를 업데이트해야합니다. 창 크기를 조정하거나 응용 프로그램을 실행하기 전에 시스템 글꼴 크기를 변경해보십시오. 그러면 그 이유를 알 수 있습니다. 모든 사용자의 시스템이 귀하의 시스템과 같지는 않습니다.

+0

고마워. 그것은 내가 필요한 것입니다. – Diego

관련 문제