모델을 전달하여 간단한 JList를 생성하는 스윙 응용 프로그램에 문제가 있습니다. 모델이 명백하게 채워지더라도 JList는 자신의 모델 내용을 표시하지 않습니다.Bizarro Swing JList 모델 동작
DefaultListModel dlm = new DefaultListModel();
String[] modelElems = {"Apple", "Orange", "Banana"};
for(int i = 0; i < modelElems.length; i++)
dlm.add(i, modelElems[i]);
JList lstFruitList = new JList(dlm);
lstFruitList.setVisible(true);
내 스윙 앱이 실행되면 화면에 JList가 표시되지만 완전히 비어 있습니다. 무수한 예를 살펴 보았고, 스윙 튜토리얼을 쏟아 부 었으며, 무슨 일이 일어나고 있는지 알 수 없었습니다. 아무에게도 이런 일이 일어난 적이 있습니까? 눈부신 것 - 명백하게 틀린 무엇인가?!?
참고 : 나는 통해 루프를 시도하고있는 과일의 이름을 인쇄하는 경우, 그러나
// Prints "Fruit List model has a size of 3"
System.out.println("Fruit List model has a size of " + dlm.size());
:
다음 인쇄 문이 참으로 나의 모델이 3 개 요소를 가지고 있음을 보여줍니다 내 모델은 i
이 반복 변수 인 모든 반복에서 (String)dlm.get(i)
을 호출하여 각 모델 요소를 null
...
hmmmm
덕분에 - (1) 그렇습니다. 절대적으로 잘 컴파일됩니다. IDE 용으로 NB 7.0을 사용하고 있으며 빌드 오류가 없습니다. (2) 예, 배경색을 설정하면 제대로 된 구성 요소를 볼 수 있습니다. (3) 실제로 NB GUI 빌더에 GUI를 설치하고 있는데, 근본적으로 의심 스럽습니다. (4)'JList' 생성자에서 모델을 설정 한 후에 모델을 수정 (요소를 추가, 제거)하는 것이 왜 문제가됩니까? 그것은 특히 Java의 경우 매우 역동적으로 들리지 않습니다! GUI 빌더에 대해 어떻게 생각하십니까? – IAmYourFaja
또한 NB GUI 빌더는 변경 불가능한 코드를 자동 생성합니다 (NB 내부에서 편집 할 수 없음). GUI 빌더를 사용하여 JList의 모델을 세 가지 과일 값으로 설정하면 자동 생성 된 JList 생성자에 익명의 AbstractModel 하위 클래스가 추가 된 것을 볼 수 있습니다. 이것은 작동하는 것 같습니다. 내 자신의 * exact * 코드를 사용하면 작동하지 않습니다! 모델을 보지 못하게하는 JList에서 "pane"(루트 팬, 유리 팬 등을 실제로 이해할 수있는 편)을 코딩하십시오. – IAmYourFaja
그래서이 코드는 작동 .... 아무도 왜 대답 할 수 ??? AbstractListModel dlm = new javax.swing.AbstractListModel() { String [] strings = { "Apple", "Orange", "Banana", "Pear"}; public int getSize() {strings.length를 반환합니다. } public Object getElementAt (int i) {문자열 반환 [i]; } }; lstAvailablePlans.setModel (dlm); – IAmYourFaja