2017-03-07 122 views
0

我有一个javafx中的tableview,我想填充对象类型课程。这个想法是,在我的课程课中,我有一个复合主键,它是一个不同类的CourseId。我想在tableview的一列中添加CourseId类中的courseno,但我不知道如何获取它。在javafx中填充tableview

我当然类:

package com.licenta.ascourses.ui.model; 

import java.io.Serializable; 

public class Course implements Serializable { 

    private CourseId idCourse = new CourseId(); 
    private int year; 
    private int semester; 
    private String discipline; 
    private String professor; 

    public Course() { 

    } 

    public Course(CourseId idCourse, int year, int semester) { 
     super(); 
     this.idCourse = idCourse; 
     this.year = year; 
     this.semester = semester; 
    } 

    public Course(CourseId idCourse, int year, int semester, String discipline, String professor) { 
     this.idCourse=idCourse; 
     this.year = year; 
     this.semester = semester; 
     this.discipline = discipline; 
     this.professor = professor; 
    } 

    public CourseId getIdCourse() { 
     return idCourse; 
    } 

    public void setIdCourse(CourseId idCourse) { 
     this.idCourse = idCourse; 
    } 

    public int getYear() { 
     return year; 
    } 

    public void setYear(int year) { 
     this.year = year; 
    } 

    public int getSemester() { 
     return semester; 
    } 

    public void setSemester(int semester) { 
     this.semester = semester; 
    } 

    public String getDiscipline() { 
     return discipline; 
    } 

    public void setDiscipline(String discipline) { 
     this.discipline = discipline; 
    } 

    public String getProfessor() { 
     return professor; 
    } 

    public void setProfessor(String professor) { 
     this.professor = professor; 
    } 



} 

我courseId类:

package com.licenta.ascourses.ui.model; 

import java.io.Serializable; 



public class CourseId implements Serializable { 

    private int idDiscipline; 
    private int idProfessor; 
    private int courseNo; 

    public CourseId() { 

    } 

    public CourseId(int idDiscipline, int idProfessor, int courseNo) { 
     super(); 
     this.idDiscipline = idDiscipline; 
     this.idProfessor = idProfessor; 
     this.courseNo = courseNo; 
    } 

    public int getIdDiscipline() { 
     return idDiscipline; 
    } 

    public void setIdDiscipline(int idDiscipline) { 
     this.idDiscipline = idDiscipline; 
    } 

    public int getIdProfessor() { 
     return idProfessor; 
    } 

    public void setIdProfessor(int idProfessor) { 
     this.idProfessor = idProfessor; 
    } 

    public int getCourseNo() { 
     return courseNo; 
    } 

    public void setCourseNo(int courseNo) { 
     this.courseNo = courseNo; 
    } 

    public boolean equals(Object o) { 

     return true; 
    } 

    public int hashCode() { 

     return 1; 
    } 

} 

columnNumarCurs.setCellValueFactory(new PropertyValueFactory<Course, Integer>("")); 
     columnAn.setCellValueFactory(new PropertyValueFactory<Course, Integer>("year")); 
     columnSemestru.setCellValueFactory(new PropertyValueFactory<Course, Integer>("semester")); 
     columnDisciplina.setCellValueFactory(new PropertyValueFactory<Course, String>("discipline")); 
     columnProfesor.setCellValueFactory(new PropertyValueFactory<Course, String>("professor")); 

回答

1

setCellValueFactory方法需要Callback<CellDataFeatures, ObservableValue>:即映射一个CellDataFeatures对象到ObservableValue包含值的函数来显示。由于您拥有的值是int,并且假设columnNumarCursTableColumn<Course, Number>,所以适当的ObservableValue类型是IntegerProperty。所以你可以这样做:

columnNumarCurs.setCellValueFactory(
    cellData -> new SimpleIntegerProperty(cellData.getValue().getIdCourse().getCourseNo()));