我正在尝试更改JTable第三行单元格的颜色(如果它们有值)。我读到一个很好的方法是使用表格单元格渲染器。但是,它似乎没有做任何事情!这里有我的RENDERER代码:
tablaUsuariosPrestamos.setDefaultRenderer(Object.class,new RenderTablaPrestamos());
这里有我如何使用我的渲染器:
<h1 class="title">
<?php
if (null === ($this->params->get('page_heading')))
{
$mydoc = JFactory::getDocument();
$mytitle = $mydoc->getTitle();
echo $mytitle;
}
else
{
$active = JFactory::getApplication()->getMenu()->getActive();
echo $active->params->get('page_heading');
}
?>
</h1>
这里有我的JTable图片(我不认为模型代码会有用,因为它有点长):
我不认为它与 if clausules 有什么关系,因为我对它们进行了评论并且它也没有用。
我哪里错了?
答案 0 :(得分:1)
使用
for (int i = 0; i < tabla.getColumnCount(); i++) {
tabla.getColumnModel().getColumn(i).setCellRenderer(new RenderTablaPrestamos());
}
而不是
tablaUsuariosPrestamos.setDefaultRenderer(Object.class,new RenderTablaPrestamos());
答案 1 :(得分:0)
setDefaultRenderer
中的代码按预期运行:
final YourCellRenderer cellRenderer = new YourCellRenderer();
YourTableModel stModel = new YourTableModel();
table = new JTable(stModel);
table.setDefaultRenderer(YourComponent.class, cellRenderer);
它似乎没有渲染的原因是,当您将 YourComponent.class
映射到渲染器时,它没有触发,因为 YourTableModel
认为类是 Object
。
要更正此问题,您需要覆盖 getColumnClass
类中的 YourTableModel
方法:
public class YourTableModel extends AbstractTableModel {
...
@Override
public Class<?> getColumnClass(int columnIndex) {
return YourComponent.class;
}
...
}