JTable将单元格颜色设置为特定值
Posted
技术标签:
【中文标题】JTable将单元格颜色设置为特定值【英文标题】:JTable Set Cell Color At Specific Value 【发布时间】:2014-09-24 16:47:38 【问题描述】:我正在尝试编写一种方法,该方法针对给定的参数(值、颜色),在值等于 cellValue 的单元格的背景上设置颜色。
我的方法实际上做的是,它为整行设置单元格的背景颜色,当我选择表格上的行时,我希望方法只在特定列设置颜色(其中 cellValue 等于 value ) 每次我调用该方法时。
void setCellBackgroundColor(boolean cellValue, final Color color)
List<List<Object>> data = tView.getTTableModel().getData();
for (int row = 0; row < data.size(); row++)
for (int col = 0; col < data.get(row).size(); col++)
TableCellRenderer renderer = tView.table.getCellRenderer(row, Col);
Component component = tView.table.prepareRenderer(renderer, row, col);
boolean bValue =
TDataTypeRenderer.parseIntoRealValue(
data.get(row).get(col)
)
);
if (bValue == cellValue)
component.setBackground(color);
【问题讨论】:
和 prepareRenderer 是好的和适当的可能方式(具有列和行坐标),但它是覆盖 JTables 方法的一部分,不会在行和列内循环,结果渲染器(prepareRenderer)应该只是一个实例在视图内循环,注意 prepareRenderer 讨厌空的 JTables 视图,必须在调用被绘制之前测试行 > 0 【参考方案1】:当我选择表格上的行时,我希望方法只在特定列设置颜色
按照@mKorbel 的建议尝试覆盖prepareRenderer()
方法。
示例代码:
Object[] columnNames = "A", "B", "C", "D" ;
Object[][] data =
"abc", new Double(850.503), 53, true ,
"lmn", new Double(36.23254), 6, false ,
"pqr", new Double(8.3), 7, false ,
"xyz", new Double(246.0943), 23, true ;
JTable table = new JTable(data, columnNames)
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int col)
Component comp = super.prepareRenderer(renderer, row, col);
Object value = getModel().getValueAt(row, col);
if (getSelectedRow() == row)
if (value.equals(false))
comp.setBackground(Color.red);
else if (value.equals(true))
comp.setBackground(Color.green);
else
comp.setBackground(Color.white);
else
comp.setBackground(Color.white);
return comp;
;
选定的第一行:
选定的第二行。
Read more...
编辑
根据您的最后评论
是否可以在不点击(选择)表格行的情况下更改颜色?
是的,只需删除对选定行的检查。
Object value = getModel().getValueAt(row, col);
if (value.equals(false))
comp.setBackground(Color.red);
else if (value.equals(true))
comp.setBackground(Color.green);
else
comp.setBackground(Color.white);
【讨论】:
prepareRenderer 是好的和正确的方法,OP 问题是她/他的代码在 JTables 视图中循环并添加一堆渲染器 谢谢大家,现在我明白问题出在哪里了。 @Xerath 我已更新我的代码以仅选择所选行的单元格。 嘿嘿,但这只是在我点击表格时才选择的。是否可以在不单击(选择)表格行的情况下更改颜色? 谁能告诉我如何在 Netbeans GUI Builder 中使用它?我知道如何使用自定义代码。但似乎无法解决。以上是关于JTable将单元格颜色设置为特定值的主要内容,如果未能解决你的问题,请参考以下文章