簡體   English   中英

動態設置JTable行高

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM