gpt4 book ai didi

Java - 根据表模型中的值对 JTable 中的行进行着色

转载 作者:行者123 更新时间:2023-12-01 23:12:16 27 4
gpt4 key购买 nike

我试图根据表中的一列为表中每一行的文本着色。我无法理解渲染器的概念,并且我尝试了几种不同的渲染器,但似乎不明白它们的作用。

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

仅供引用,DataTable 是我们讲师编写的一个对象。它基本上是一个二维数组对象。

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);
}
}

我非常感谢您的解释,而不仅仅是我问题的答案。对答案的指导会很好,一些代码会非常有帮助,但请不要:“你应该写这个:我不明白的十行代码

非常感谢! :)

最佳答案

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

参见trashgod's answer herecamickr's answer here

关于Java - 根据表模型中的值对 JTable 中的行进行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732755/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com