无法将项目添加到JcomboBox Java

时间:2018-10-22 12:49:29

标签: java swing jframe jcombobox

我在将项目添加到Java中的JcomboBox(Swing)时遇到问题。我没有任何错误,但是由于该函数未添加任何项目,因此无法正常工作。我只想将4门课程(其courseName)添加到comboBox的不同插槽中。构造函数应添加元素。有人可以识别我在做什么错吗?

这是我代码的重要部分。

public class CourseCatalog extends javax.swing.JFrame {

     ArrayList <Course> courseList = new ArrayList<>();
    public void addCourse(Course accAdd) {
    courseList.add(accAdd);
}

/**
 * Creates new form ViewKursFrame
 */
public CourseCatalog() {
    initComponents();

    for (Course kursen : courseList){
        jcbKursNamn.addItem(kursen.getCourseName());
        System.out.println("sjAJDJASJD");
    }
}

课程课程

public class Course {

private String kursnamn;
private String Kurskod;
private String svårighetsgrad;
private String ämnesgrupp;
//static ArrayList <Course> kursLista = new ArrayList<>();

public Course(){   }

public Course (String kursnamn, String kurskod, String svårighetsgrad, String ämnesgrupp){
    this.kursnamn = kursnamn;
    this.Kurskod = kurskod;
    this.ämnesgrupp = ämnesgrupp;
    this.svårighetsgrad = svårighetsgrad;
}

主类

public class MainView {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    CourseCatalog view = new CourseCatalog();
    Course kurs1 = new Course("Programutveckling med java", "D0024E", "Grundkurs", "Data");
    Course kurs2 = new Course("Programutveckling med java2", "D0007N", "Grundkurs", "Data");
    Course kurs3 = new Course("Programutveckling med Ruby", "D0024F", "Masterkurs", "Data");
    Course kurs4 = new Course("Programutveckling med HTML", "D004F", "Grundkurs", "Data");

    view.addCourse (kurs1);
    view.addCourse (kurs2);
    view.addCourse (kurs3);
    view.addCourse (kurs4);

    view.visaKurserna();
    view.setVisible(true);       
}

1 个答案:

答案 0 :(得分:0)

问题是您要在 CourseCatalog 构造函数中向JComboBox添加课程。由于任何类的构造函数始终仅在对象初始化时才被调用,并且在该初始化时间,您维护的用于保存课程列表的 courseList 变量将为空-导致JComboBox不显示任何内容。

修复/分辨率: 不要在初始化时将课程添加到JComboBox中,而是在添加课程时添加它。 让您的addCourse()方法如下所示:

public void addCourse(Course accAdd) {
    courseList.add(accAdd);
    jcbKursNamn.addItem(accAdd.getCourseName());
}

我希望这个答案有帮助