Java-根据tablemodel中的值为JTable中的行着色
我试图根据表中的一列为表中每一行的文本着色。我很难理解渲染器的概念,我试过几种不同的渲染器,但似乎不了解它们的功能 我试图将讲师提供给我们的某个API中的前十名参赛者加载到表格模型中,但根据参赛者的性别(由Finisher/racer对象的getCategory()方法返回)为每一行着色 仅供参考,DataTable是我们讲师编写的对象。它基本上是一个2D数组对象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
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()解决了我的问题!