2013-01-23 3 views
0

저는 Component Design 과정을위한 프로그램을 구현 중이며 현재 Jlist를 단순하게 사용해야하는 것과 어려움을 겪고 있습니다. 이 프로그램은 도형을 그리며 프레임의 BorderLayout.West에있는 ScrollPane의 JList에 표시해야합니다.DefaultListModel이 AddElement를 사용하여 변경 될 때 JList가 표시되지 않습니다.

현재 프로그램은 ScrollPane을 보여 주지만, shapeListModel에 추가 한 객체를 표시하지 않습니다. 내가 뭔가를 놓치고 있거나 뭔가 코드가 잘못되었다는 것이 궁금합니다. 현재 이것은 JList 생성, 할당 및 업데이트와 관련된 모든 코드입니다.

//Class Variable Declaration 
protected ArrayList<Shape> shapes = new ArrayList<Shape>(); 
private JScrollPane shapeScrollPane = new JScrollPane(); 
private JList<String> shapeList; 
protected DefaultListModel<String> shapeListModel; 

    //Creation of JList objects and what not 
shapeListModel = new DefaultListModel<String>(); 

    //This element is added aimply to try and get one to show up on my JList, 
shapeListModel.addElement("SERIOUSLY FRUSTRATED"); 
    //It does not just so you know 

shapeList = new JList<String>(shapeListModel); 
shapeList.setModel(shapeListModel); 

    //Adding JList to ScrollPane and setting size 
shapeScrollPane.add(shapeList); 
shapeScrollPane.setPreferredSize(new Dimension(250,600)); 

//Clarifying JList actions 
shapeList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
shapeList.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
shapeList.setVisibleRowCount(-1); 
shapeList.addListSelectionListener(this);** 

    //This is called everytime a new shape is created and adds it to the Arraylist 
    //shapes and the DefaultListModel shapeListModel 
shapes.add(newShape); 
shapeListModel.addElement(newShape.toString()); 

몇 분 전에 잘못된 형식의 질문에 사과드립니다. 나는 약 4 시간 동안이 일에 매달 렸고, 마지막 두 시간은 온라인으로 답을 찾는 데 썼다. 나는 지금 내가 가진 코드 안에 문제가 있는지 물어 보는 결과를 얻는다.

+0

'shapeList.setVisibleRowCount (-1);이 (가) 문제의 일부일 수 있습니다. – mre

+1

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

3

구성 요소에 스크롤 창을 "추가"하지 않습니다. 보기 포트보기를 대신 설정해야합니다.

shapeScrollPane.add(shapeList); 

이렇게이 작업을 수행하지 마십시오

...

shapeScrollPane.setViewportView(shapeList); 

체크 아웃

또한이 shapeList.setVisibleRowCount(-1)은 나를 끝까지 놀라게합니다.

shapeList = new JList<String>(shapeListModel); 
shapeList.setModel(shapeListModel); 

이 다음 충분한 더 ...

shapeList = new JList<String>(shapeListModel); 

업데이트 ...

당신이 할 필요가 없습니다 업데이트

알 o이 코드가 이전에 닫은 질문에서 사용 된 것과 동일한 코드 인 경우 ...

canvas.getGraphics()은 나를 두려워하게합니다! 강사가이 강령을 준 경우, 강사가 강의를하지 않아야합니다!

+0

모든 도움에 감사드립니다. 나는 모든 의견을 고려할 것이다. 다른 학생은 JScrollPane이 아니라 ScrollPane을 사용해야한다고 지적했습니다. 그리고 가난한 코드 인 경우 캔버스 넌센스가 강사에게서 나왔습니다. 반드시 코스의 목적은 아닙니다. 나는 그를 데리고 올거야. – ErichNova

+0

'JScrollPane'은 올바른 구성 요소입니다. 무겁고 가벼운 무게 구성 요소를 함께 혼합하고 싶지는 않습니다. – MadProgrammer

+0

수정, MadViewmer, ViewportView를 사용합니다. 잘 작동하며 구성 요소를 혼합하는 것에 대해 매우 신중합니다. – ErichNova