[英]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.