Java 在JTable中选择行数据时不显示行数据

Java 在JTable中选择行数据时不显示行数据,java,jtable,Java,Jtable,我的JTable的最后一行有奇怪的问题。我不能选择行,我只能选择列。当我这样做时,列的数据不会显示。所有的人都变白了。我没有显示任何错误,因此我无法找出错误所在 下面是我如何创建JTable的 table = new JTable(new StudentTableModel()); //create button to sort the table data table.setAutoCreateRowSorter(true); //use the costum rendrer for the

我的JTable的最后一行有奇怪的问题。我不能选择行,我只能选择列。当我这样做时,列的数据不会显示。所有的人都变白了。我没有显示任何错误,因此我无法找出错误所在

下面是我如何创建JTable的

table = new JTable(new StudentTableModel());
//create button to sort the table data
table.setAutoCreateRowSorter(true);
//use the costum rendrer for the table data
table.setDefaultRenderer(String.class, new StudentTableRenderer());
table.setDefaultRenderer(float.class, new StudentTableRenderer());
table.setDefaultEditor(float.class, new AverageCellEditor()); 
这是JTable模型

public class StudentTableModel extends DefaultTableModel implements TableModel {

      public StudentTableModel(Model model, Teacher teacher, Classe classe, Lesson lesson) {
        super();
        if (model != null) {
        this.model = model;
        this.teacher = teacher;
        this.classe = classe;
        students = model.getStudentsInClass(classe.toString());
        this.lesson = lesson;
        Collections.sort(students, new PersonComparator());
        fireTableDataChanged();
    }
}


public int getColumnCount() {
    if (model == null)
        return 0;
    return names.length;
}

public String getColumnName(int col) {
    return names[col];
}

public int getRowCount() {
    if (model == null)
        return 0;
    return students.size();
}

public Object getValueAt(int line, int col) {
    switch (col) {
    case 0:
        return students.get(line).getLastName();
    case 1:
        return students.get(line).getFirstName();
    case 2:
        float note;
        if (lesson == null)
            note = students.get(line).getAverage().getMark();
        else
            note = students.get(line).getAverages().get(lesson).getMark();
        if (note == -1)
            return null;
        else
            return note;
    case 3:
        if (lesson == null)
            return students.get(line).getAverage().getComment();
        else
            students.get(line).getAverages().get(lesson).getComment();
    }
    return null;
}

public boolean isCellEditable(int row, int col) {
    if (col < 2)
        return false;
    if (lesson != null && teacher.getLesson().equals(lesson)) {
        return true;
    }
    if (lesson == null && classe.getResponsable().equals(teacher) && col == 3) {
        return true;
    }
    return false;
}

public void removeTableModelListener(TableModelListener arg0) {

}

public void setValueAt(Object object, int line, int col) {
    switch (col) {
    case 2:
        if (lesson == null)
            students.get(line).getAverage().setMark((float) object);
        else
            students.get(line).setAverage(lesson,(float) object);
        break;
    case 3:
        if (lesson == null)
            students.get(line).getAverage().setComment((String) object);
        else
            students.get(line).getAverages().get(lesson)
                    .setComment((String) object);
        break;
    }
    model.updatesTeachersAndStudents();
}
公共类StudentTableModel扩展DefaultTableModel实现TableModel{
公共学生表模型(模型模型、教师、班级、课程){
超级();
如果(型号!=null){
this.model=模型;
这个老师=老师;
this.classe=classe;
students=model.getStudentsInClass(classe.toString());
这个.课=课;
Collections.sort(学生、新人比较者());
fireTableDataChanged();
}
}
public int getColumnCount(){
if(model==null)
返回0;
返回name.length;
}
公共字符串getColumnName(int-col){
返回名称[col];
}
public int getRowCount(){
if(model==null)
返回0;
返回学生。大小();
}
公共对象getValueAt(整数行,整数列){
开关(col){
案例0:
返回students.get(line).getLastName();
案例1:
return students.get(line).getFirstName();
案例2:
浮动票据;
如果(课程==null)
注意=students.get(line.getAverage().getMark();
其他的
note=students.get(line).getAverages().get(lesson).getMark();
如果(注==-1)
返回null;
其他的
退货单;
案例3:
如果(课程==null)
返回students.get(line.getAverage().getComment();
其他的
学生.get(行).getAverages().get(课).getComment();
}
返回null;
}
公共布尔值可编辑(int行,int列){
if(col<2)
返回false;
如果(课!=null&&teacher.getLessure().equals(课)){
返回true;
}
if(lessure==null&&classe.getResponsable().equals(teacher)&&col==3){
返回true;
}
返回false;
}
公共void removeTableModelListener(TableModelListener arg0){
}
public void setValueAt(对象对象、整数行、整数列){
开关(col){
案例2:
如果(课程==null)
students.get(line.getAverage().setMark((float)对象);
其他的
学生.get(line).setAverage(课,(浮点)对象);
打破
案例3:
如果(课程==null)
students.get(line.getAverage().setComment((String)对象);
其他的
学生.get(行).getAverages().get(课)
.setComment((字符串)对象);
打破
}
model.updateSetachersandStudents();
}

}我已经解决了我的问题。问题出现在表格单元格渲染器中。我始终将背景设置为白色,因此单元格被选中。文本颜色变为白色,因此不会显示在白色背景上