Code
int defaultHeight = 20;
JTable table = new JTable(model) {
@Override public void updateUI() {
super.updateUI();
setAutoCreateRowSorter(true);
setSurrendersFocusOnKeystroke(true);
setRowHeight(defaultHeight);
setDefaultRenderer(RowHeader.class, new RowHeaderRenderer());
setDefaultEditor(RowHeader.class, new RowHeaderEditor());
TableColumn column = getColumnModel().getColumn(1);
column.setCellRenderer(new TextAreaCellRenderer());
column.setPreferredWidth(160);
}
};
table.getModel().addTableModelListener(e -> {
int mc = e.getColumn();
int mr = e.getFirstRow();
int vc = table.convertColumnIndexToView(mc);
int vr = table.convertRowIndexToView(mr);
Object o = table.getValueAt(vr, vc);
if (mc == 0 && o instanceof RowHeader) {
RowHeader rh = (RowHeader) o;
int vc1 = table.convertColumnIndexToView(1);
TableCellRenderer r = table.getColumnModel().getColumn(vc1)
.getCellRenderer();
Object v = table.getValueAt(vr, vc1);
Component c = r.getTableCellRendererComponent(
table, v, true, true, vr, vc1);
int h = rh.isSelected() ? c.getPreferredSize().height
: defaultHeight;
table.setRowHeight(vr, h);
}
});
References
No comments:
Post a Comment