Java 在JTable中选择行数据时不显示行数据
我的JTable的最后一行有奇怪的问题。我不能选择行,我只能选择列。当我这样做时,列的数据不会显示。所有的人都变白了。我没有显示任何错误,因此我无法找出错误所在 下面是我如何创建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
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();
}
}我已经解决了我的问题。问题出现在表格单元格渲染器中。我始终将背景设置为白色,因此单元格被选中。文本颜色变为白色,因此不会显示在白色背景上