[英]Dynamically Set JTable Row Height
我正在使用JTable顯示多行數據。 我的數據使用HTML格式化,每個單元格涉及幾行。 我希望每當調整表的大小時,JTable行的高度就可以動態更改以能夠顯示所有內容。 到目前為止,我已經使用它來動態調整自定義渲染器類中行的高度:
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
setSize(table.getColumnModel().getColumn(column).getWidth(), (int) getPreferredSize().getHeight());
int height = getHeight();
if (table.getRowHeight(row) != height){
table.setRowHeight(row, height);
table.repaint();
}
return c;
}
問題在於,行的高度取決於單元格內容中的換行數( <br />
)。 例如,如果一行有兩個行<br />
標簽,則行高將僅調整為等效於兩個行高。 這忽略了某些行很長且換行的情況,這意味着單元格內容將超過兩行。 這就是我的意思。 我的單元格值看起來像:
String str = "<html> "
+ "<p style = \"font-family: 'Euphemia'; font-size: 1.1em;\"> "
+ "This is a line <br /> "
+ "This is a second line which will be very long causing it to automatically wrap to a new line <br /> "
+ "This is the third line. "
+ "</p> "
+ "</html> ";
在這種情況下,由於存在三個<br />
標記,因此該行的大小將被調整為僅顯示三行,從而隱藏了最后一行。 我確實更喜歡使用html,因為它使我可以顯示內容的各種格式。 我該如何解決?
嘗試這樣的事情來計算大小:
public Dimension calcSize(final String text)
{
final JLabel l = new JLabel(text);
return l.getPreferredSize();
}
您可以將JLabel
移到靜態字段以進行速度優化...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.