如何在Java JList中显示对象?

时间:2016-06-02 16:08:17

标签: java swing arraylist desktop-application

我正在尝试创建学生注册系统。在这个系统中,学生可以通过点击课程"课程来查看课程名称,课程学分和课程讲师。为此目的,我有一个Courses类,一个数据库,一个框架和一个JList courslist。

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)。如果你帮助我,我会很高兴。

1 个答案:

答案 0 :(得分:2)

您需要覆盖Course类中的toString(),以便返回要显示的课程的名称。

看一下这个例子:

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

显示以下内容:

enter image description here