私はかなり複雑なプログラムを書いているので、問題が発生している場所の観点からのみ説明しようと思います。
私の見解では、JScrollPaneを作成して、学生が登録されているコースのリストを表示します。
registeredPane = new JScrollPane(); registeredPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
registeredPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
c.gridx = 2;
c.gridwidth = 1;
c.gridheight = 2;
c.weightx = 1;
c.weighty = 1;
c.fill = GridBagConstraints.BOTH;
layout.setConstraints(registeredPane, c);
次に、コントローラーで、モデルでこの関数を呼び出して、現在アクティブな学生が登録されているコースを反映するようにモデルを変更します。
public void updateCurrentStudentCourses() {
ArrayList<String> courseNames = new ArrayList<String>();
for (Course c: currentStudent.getRegCourses()) {
courseNames.add("" + c.getDepartment().getId() + c.getCode());
}
System.out.println(courseNames);
}
次に、再びコントローラーで、ArrayListをJScrollPaneに追加して、これらの変更を反映するようにビューを更新します。
public void updateView() {
view.getNameField().setText(model.getCurrentStudent().getName());
view.getRegisteredPane().removeAll();
view.getRegisteredPane().getViewport().add(model.getCurrentStudentCourses());
view.getRegisteredPane().repaint();
}
スクロールバーが消えますが、それだけです。リスト項目(私が知っているArrayListにある)は表示されません。私は何が間違っているのですか?