Cha*_*uni 13
多线JTable电池可以轻松使用定制TableCellRenderer.使用以下步骤创建TableCellRenderer.
第1步:创建 TableCellRenderer
以下代码显示TableCellRenderer为String[]值创建多行.可以将其更改String[]为a Vector或其他Collection类型
public class MultiLineTableCellRenderer extends JList<String> implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//make multi line where the cell value is String[]
if (value instanceof String[]) {
setListData((String[]) value);
}
//cell backgroud color when selected
if (isSelected) {
setBackground(UIManager.getColor("Table.selectionBackground"));
} else {
setBackground(UIManager.getColor("Table.background"));
}
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
第2步:TableCellRenderer进入JTable
MultiLineTableCellRenderer renderer = new MultiLineTableCellRenderer();
//set TableCellRenderer into a specified JTable column class
table.setDefaultRenderer(String[].class, renderer);
//or, set TableCellRenderer into a specified JTable column
table.getColumnModel().getColumn(columnIndex).setCellRenderer(renderer);
Run Code Online (Sandbox Code Playgroud)
这是我测试的截图:
基本上你可以把任何类型JComponents的JTable单元格,依赖于内容是否可编辑,那就是跟我说话
JTable一个TableColumn没有TableHeader
JPanel(GridBagLayout)JLabels或或JTextFields
JList