我想做一个表,其中第一行包含String
,另一行包含Image
。
我使用它(将2乘0更改以获取String
表)。我可以同时做这两种方式吗?
DefaultTableModel table = new DefaultTableModel(model.getRowCount(),model.getColumnCount()) {
public Class getColumnClass(int column)
{
return getValueAt(2, column).getClass();
}
};
答案 0 :(得分:0)
默认渲染器无法渲染每个类的每个实例,也不会渲染Image
实例。
如果您愿意使用(或像安德鲁所说的那样滥用)JTable来基于单元类进行任意渲染,则必须编写自己的渲染器。您可以根据自己的需要来上课,DefaultTableCellRenderer
或实现自己的TableCellRenderer
。
然后使用JTable.setDefaultRenderer
为每种特定的类类型安装一个渲染器(注意,典型的字符串渲染由默认渲染器处理)。
答案 1 :(得分:0)
在我看来,“ User1,User2,...”应该是列标题,而不是TableModel的数据。
行的数据应该是ImageIcon而不是文件名。渲染器不应从文件读取数据。
阅读How to Use Tables上Swing教程中的部分,以获取有关使用JTable的基础知识的更多信息。
如果确实需要在每个单元格中混合数据,则可以通过检查存储在该单元格中数据的类类型来获取该单元格的渲染器。
JTable table = new JTable(data, columnNames)
{
public TableCellRenderer getCellRenderer(int row, int column)
{
int modelColumn = convertColumnIndexToModel(column);
Class cellClass = getModel().getValueAt(row, modelColumn).getClass();
return getDefaultRenderer( cellClass );
}
};
您当然需要: