我正在尝试创建学生注册系统。在这个系统中,学生可以通过点击课程"课程来查看课程名称,课程学分和课程讲师。为此目的,我有一个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)。如果你帮助我,我会很高兴。
答案 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;
}
}
显示以下内容: