Java-根据tablemodel中的值为JTable中的行着色

Java-根据tablemodel中的值为JTable中的行着色,java,swing,colors,jtable,tablemodel,Java,Swing,Colors,Jtable,Tablemodel,我试图根据表中的一列为表中每一行的文本着色。我很难理解渲染器的概念,我试过几种不同的渲染器,但似乎不了解它们的功能 我试图将讲师提供给我们的某个API中的前十名参赛者加载到表格模型中,但根据参赛者的性别(由Finisher/racer对象的getCategory()方法返回)为每一行着色 仅供参考,DataTable是我们讲师编写的对象。它基本上是一个2D数组对象 public void showRacers(DefaultTableModel tblModel, @Suppre

我试图根据表中的一列为表中每一行的文本着色。我很难理解渲染器的概念,我试过几种不同的渲染器,但似乎不了解它们的功能

我试图将讲师提供给我们的某个API中的前十名参赛者加载到表格模型中,但根据参赛者的性别(由Finisher/racer对象的getCategory()方法返回)为每一行着色

仅供参考,DataTable是我们讲师编写的对象。它基本上是一个2D数组对象

public void showRacers(DefaultTableModel tblModel,
        @SuppressWarnings("rawtypes") JList listOfRaces) {
    // Clear the model of any previous searches
    tblModel.setRowCount(0);
    // Initialize an object to the selected city
    CityNameAndKey city = (CityNameAndKey) listOfRaces.getSelectedValue();
    // Get the runners for this city
    DataTable runners = this.getRunners(city);
    // Set the column headers
    this.setColumnHeaders(tblModel);
    // Make an array list of object Finisher
    ArrayList<Finisher> finisherList = new ArrayList<Finisher>();
    // Make an array that holds the data of each finisher
    Object[] finisherData = new Object[6];
    // Make a finisher object
    Finisher f;
    for (int r = 0; r < 10; r++) {
        // Assign the data to the finisher object
        finisherList.add(f = new Finisher(runners.getCell(r, 0), runners
                .getCell(r, 1), runners.getCell(r, 2), runners
                .getCell(r, 3), runners.getCell(r, 4), runners
                .getCell(r, 5)));
        // Add the data into the array
        finisherData[0] = f.getPosition();
        finisherData[1] = f.getBibNo();
        finisherData[2] = f.getTime();
        finisherData[3] = f.getGender();
        finisherData[4] = f.getCategory();
        finisherData[5] = f.getRuns();
        // Put it into the table model
        tblModel.addRow(finisherData);
    }
}
public void showRacers(DefaultTableModel TBL模型,
@SuppressWarnings(“rawtypes”)JList listOfRaces){
//清除以前任何搜索的模型
tblModel.setRowCount(0);
//将对象初始化为选定的城市
CityNameAndKey city=(CityNameAndKey)listOfRaces.getSelectedValue();
//为这个城市找跑步者
DataTable runners=this.getRunners(城市);
//设置列标题
这个.setColumnHeaders(tblModel);
//制作对象Finisher的数组列表
ArrayList finisherList=新的ArrayList();
//制作一个数组,保存每个finisher的数据
Object[]finisherData=新对象[6];
//制作一个finisher对象
修整器f;
对于(int r=0;r<10;r++){
//将数据指定给finisher对象
finisherList.add(f=新的Finisher(runners.getCell(r,0),runners
.getCell(r,1),runners.getCell(r,2),runners
.getCell(r,3),runners.getCell(r,4),runners
.getCell(r,5));
//将数据添加到数组中
finisherData[0]=f.getPosition();
finisherData[1]=f.getBibNo();
finisherData[2]=f.getTime();
finisherData[3]=f.getGender();
finisherData[4]=f.getCategory();
finisherData[5]=f.getRuns();
//将其放入表格模型中
tblModel.addRow(finisherData);
}
}
我将非常感谢您的解释,而不仅仅是我问题的答案。对答案的指导很好,有些代码会非常有用,但请不要:“你应该写这个:
10行代码,我不懂


非常感谢!:)

使用TableCellRenderer只允许您为一列着色。每列必须有一个。更简单的方法是在JTable中重写
prepareRenderer(…)
,为整行着色


请参阅或使用TableCellRenderer将只允许您为一列着色。您必须为每列指定一个。更简单的方法是在JTable中重写
prepareRenderer(…)
,为整行着色


请参阅或使用TableCellRenderer将只允许您为一列着色。您必须为每列指定一个。更简单的方法是在JTable中重写
prepareRenderer(…)
,为整行着色


请参阅或使用TableCellRenderer将只允许您为一列着色。您必须为每列指定一个。更简单的方法是在JTable中重写
prepareRenderer(…)
,为整行着色


请参见或

您将需要一个TableCellRenderer。用“如何“,您将找到大量的参考资料。您基本上创建了一个扩展DefaultTableCellRenderer并重写相应方法的类。@MartijnCourteaux感谢您的回复!是的,我见过TableCellRenderer,但它不是一次只处理一个单元格吗?您可以覆盖JTable中的
prepareRenderer(…)
,为整行着色。您可以在这里找到许多示例。@splungebob Hi,这里的“here”是指stackoverflow,还是要在“here”上添加链接?您需要一个TableCellRenderer。在谷歌上搜索“如何”,你会发现大量的参考资料。您基本上创建了一个扩展DefaultTableCellRenderer并重写相应方法的类。@MartijnCourteaux感谢您的回复!是的,我见过TableCellRenderer,但它不是一次只处理一个单元格吗?您可以覆盖JTable中的
prepareRenderer(…)
,为整行着色。您可以在这里找到许多示例。@splungebob Hi,这里的“here”是指stackoverflow,还是要在“here”上添加链接?您需要一个TableCellRenderer。在谷歌上搜索“如何”,你会发现大量的参考资料。您基本上创建了一个扩展DefaultTableCellRenderer并重写相应方法的类。@MartijnCourteaux感谢您的回复!是的,我见过TableCellRenderer,但它不是一次只处理一个单元格吗?您可以覆盖JTable中的
prepareRenderer(…)
,为整行着色。您可以在这里找到许多示例。@splungebob Hi,这里的“here”是指stackoverflow,还是要在“here”上添加链接?您需要一个TableCellRenderer。在谷歌上搜索“如何”,你会发现大量的参考资料。您基本上创建了一个扩展DefaultTableCellRenderer并重写相应方法的类。@MartijnCourteaux感谢您的回复!是的,我见过TableCellRenderer,但它不是一次只处理一个单元格吗?您可以覆盖JTable中的
prepareRenderer(…)
,为整行着色。你会在这里找到很多例子。@splungebob嗨,这里的意思是stackoverflow,还是你想在“这里”上加个链接?谢谢D重写prepareRenderer()解决了我的问题!谢谢D重写prepareRenderer()解决了我的问题!谢谢D重写prepareRenderer()解决了我的问题!谢谢D重写prepareRenderer()解决了我的问题!