java - JScrollPane 的问题——尝试在模型更改时更新它

标签 java swing arraylist jscrollpane

我正在编写一个相当复杂的程序,因此我将尝试仅根据问题发生的位置来解释它。

在我看来,我创建一个 JScrollPane 来显示学生注册的类(class)列表:

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);

然后,我在 Controller 中通过调用模型中的此函数来更改模型以反射(reflect)当前活跃学生注册的类(class):

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);
}

然后,我再次在 Controller 中通过添加以下内容来更新 View 以反射(reflect)这些更改 ArrayList 到 JScrollPane:

public void updateView() {
view.getNameField().setText(model.getCurrentStudent().getName());

view.getRegisteredPane().removeAll();
view.getRegisteredPane().getViewport().add(model.getCurrentStudentCourses());
view.getRegisteredPane().repaint();
}

滚动条消失了,但仅此而已。列表项(我知道在 ArrayList 中)不会显示。我做错了什么?

最佳答案

编辑
如果 model.getCurrentStudentCourses() 返回一个 ArrayList 那么您可以将 ArrayList 的内容放入 JTextArea 中,然后将 JScrollPaneviewport 设置为 JTextArea。您可以按如下方式进行: 你的 updateView() 方法应该是这样的:

JTextArea ta = new JTextArea(30,100);
public void updateView() {
    ta.setText("");
    for (String course : model.getCurrentStudentCourses())
    ta.append(course+"\n");
    view.getNameField().setText(model.getCurrentStudent().getName());
    view.getRegisteredPane().setViewportView(ta);
}

关于java - JScrollPane 的问题——尝试在模型更改时更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577560/

相关文章:

java - 为什么实例和静态内部类的初始化不同?

java - 调整独立应用程序以使用 Spring

java - 如何以编程方式取消选择 JTable (swing) 中当前选定的行?

java - 如果不为空,则将 String 添加到 ArrayList

java - 如何从 ArrayList 交换两个子列表?

java - 在 Java Eclipse AWT 中,如何检测在按住 Shift 的同时是否单击了按钮?

java - 扫描仪 NextLong() 中输入不匹配错误 -java

java - 如何返回带有 ActionErrors 的多个表单的 JSP?

java - 使 JPopupMenu 以一定的左下角坐标显示

java - 比较 2 个 ArrayList<HashMap<String, String>> 之间的字符串