这就是我尝试这样做的方式,
private QCellPanel renderer = new QCellPanel();
private QCellPanel editor = new QCellPanel();
@Override
public Object getCellEditorValue() {
return editor.getQuestion();
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
renderer.setQuestion((Qusetion) value);
table.setRowHeight(renderer.getPreferredSize().height);
return renderer;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
editor.setQuestion((Qusetion) value);
table.setRowHeight(editor.getPreferredSize().height);
return editor;
}
答案 0 :(得分:4)
您需要使用双参数版本setRowHeight(rowNumber, height)
。
如果可能,您还应该避免在getXComponent
方法中更改行高,因为setRowHeight
强制重绘表,这将导致它再次请求渲染器组件等。 ..默认实现可能足够智能,只要高度稳定就不会触发它,但如果你最终得到无限循环,那么我首先看看:)