【发布时间】:2013-03-12 17:39:24
【问题描述】:
我正在编写一个相当复杂的程序,所以我将尝试仅根据问题发生的位置来解释它。
在我看来,我创建了一个 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 中)。我做错了什么?
【问题讨论】:
-
您要将
ArrayLists的这些值添加到Swing的哪个组件?? -
向 ArrayList 添加字符串(课程名称),打印调用正确显示为 [string1、string2 等]。这就是我知道 ArrayList 没问题的方式。
-
view.getNameField()正在返回一个JTextArea对象。对吗?? -
JTextField。那部分是无关的。 -
view.getNameField()这个方法返回什么?
标签: java swing arraylist jscrollpane