繁体   English   中英

JTable的通用单元格渲染器

[英]Generic cell renderer for JTable

我想制作一个JTable单元格渲染器,该渲染器将能够识别数据类型并使用适当的表示形式。

更具体地说,我希望我的表能够识别数据类型是否为Collection,在那种情况下使用JComboBox表示(在其他情况下为标准表示:对于布尔类型使用JCheckBox,对于其他类型使用JLabel,对于使用自定义模型的方法getColumnClass()

我不知道数据的类型,在哪一列是Collection甚至根本没有Collection,所以我不能使用标准的方式

JComboBox cell renderer TableColumn column = table.getColumnModel().getColumn(1);

或类似的我熟悉的东西。

请帮忙 :)

您可以在JTable中使用DefaultRendering机制,重新使用此机制以应用于每个单元格:

tableView.setDefaultRenderer(TitleViewCell.class, new TitleTableCellRenderer.class());
tableView.setDefaultRenderer(DataViewCell.class, new DataTableCellRenderer.class());

例如,您可以在此处将JTable子类化为JTableView:

import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;

public class JTableView extends JTable
{
    private static final long serialVersionUID = -1350656893711208356L;

    public JTableView(TableModel tableModel)
    {
        super(tableModel);
    }

    public TableCellRenderer getCellRenderer(int row, int column)
    {
        Object value = getValueAt(row, column);
        if (value != null)
        {
            return getDefaultRenderer(value.getClass());
        }
        return super.getCellRenderer(row, column);
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM