[英]How to use JTable cell renderer without singletons?
我正在使用DefaultTableCellRenderer为表的行着色。 行的颜色不是显示的表数据中固有的颜色,它是用于构建表的基础数据的属性。 我正在使用表模型来提供来自基础数据的单元格数据(将其显式传递给表模型,并谨慎地避免线程问题。)
在渲染器中,我需要访问基础数据或表模型。 目前,我可以摆脱静态或单例,但将来可能不理想。
从渲染器访问数据的正确方法是什么? 我的渲染器是这样的:
class SummaryTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
... access my data here to derive color ...
c.setBackground(color);
return c;
}
}
我希望可以使用table.getModel()获得我的表模型,但是那会返回无法转换为我的表模型的类型(它扩展了AbstractTableModel,而不是TableModel,后者是接口)。
出于兼容性考虑,我正在使用JavaSE-1.6,以防万一。 谢谢!
调用getTableCellRendererComponent
方法时会传递JTable
的引用...
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
为什么不仅仅使用它来获取对TableModel
的引用呢?
TableModel model = table.getModel();
现在,根据您的需求,您可能需要将其TableModel
为TableModel
实现
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.