gpt4 book ai didi

java - 如何使用 CustomRenderer 更改 jTable 单元格颜色

转载 作者:行者123 更新时间:2023-12-02 06:41:26 24 4
gpt4 key购买 nike

我的问题是我想更改 jTable 中一列中单元格的单独背景颜色。我想出的代码将颜色更改为一种,并且它适用于所有列。我做错了什么?

这是我的代码

public void fillReserveTable() {
MemberDAO dao = DATA.MemberDAO.getInstance();
ResultSet res2 = dao.fillReservationTable();
try {
if (res2.next()) {
res2.beforeFirst();
reserveTable.setModel(DbUtils.resultSetToTableModel(res2));
setUpOnHold(reserveTable, reserveTable.getColumnModel().getColumn(4));
reserveTable.getColumnModel().getColumn(3).setCellRenderer(new CustomRenderer());
jScrollPane14.setVisible(true);
}else{
jScrollPane14.setVisible(false);
}
} catch (SQLException e) {
}
}

class CustomRenderer extends DefaultTableCellRenderer {

MemberDAO dao = DATA.MemberDAO.getInstance();
ResultSet res2 = dao.fillReservationTable();

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component cellComponent = super.getTableCellRendererComponent(reserveTable, value, isSelected, hasFocus, row, column);
int row2 = 0;
try {
while (res2.next()) {
String status = reserveTable.getValueAt(row2, 3).toString();
if (status.equals("Available")) {
cellComponent.setBackground(Color.green);
} else {
cellComponent.setBackground(Color.red);
}
row2++;
}
} catch (SQLException e) {
}
return cellComponent;
}
}

最佳答案

单元格渲染非常频繁地发生。您不想在渲染过程中执行 SQL 调用。另外,您应该在 SQLException 发生时记录它,而不是默默地吞下它。

在本例中,您将结果集存储为单元格渲染器中的字段。第一次渲染时,您将迭代到结果集的末尾。

不要查询状态,而是使用传递给渲染器的value参数。这将是正在渲染的单元格中的值。如果您需要其他单元格的值,请从 TableModel 获取。

关于java - 如何使用 CustomRenderer 更改 jTable 单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100151/

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