如何在Java JList 中显示对象?

How To Display Objects in Java JList?

我正在尝试创建一个学生注册系统。在这个系统中,学生可以通过单击 "Courses" button.For 查看课程名称、课程学分和课程的讲师。为此,我有一个课程 class、一个数据库、一个框架和JList 课程列表。

ArrayList<Courses> aq = Database.allCourses(); 

//allCourses() is a static method in my Database class that returns fields from my Database as an ArrayList<Courses>

 courselist.setListData(Driver.converToCoursesArray(aq));

//Driver.converttoCoursesArray() is a static method in my Driver class that takes a ArrayList<Courses> as a paramater and returns a Courses[] array.

现在,我的问题是在我的框架中,JList 总是看起来像 p1.Courses@4532 当我不小心尝试使用 System.out.println() 打印对象时,我看到了类似的问题。但在这种情况下,我将 arraylist 转换为数组,我的 JList 包含对象 (JList)。所以,如果你能帮助我,我会很高兴。

您需要覆盖课程 class 中的 toString() ,使其 returns 成为您要显示的课程名称。

看看这个例子:

import javax.swing.*;
import java.awt.*;

public final class Example extends JFrame {

    public Example() {

        Course[] courses = {
                new Course("Course 1"),
                new Course("Course 2"),
                new Course("Course 3")
        };

        JList<Course> courseJList = new JList<>(courses);

        getContentPane().add(courseJList);

        pack();
        setMinimumSize(new Dimension(200, 200));
        setVisible(true);
    }

    public static void main(String[] args) {
        new Example();
    }
}

final class Course {

    private final String courseName;

    public Course(final String courseName) {
        this.courseName = courseName;
    }

    @Override
    public String toString() {
        return courseName;
    }
}

这会显示以下内容: