2
我有一個JTable實例,包含多個行。該表中的列是包含HTML格式字符串的JLabel實例。如何正確計算jTable行的高度以確保包含HTML的包含jLabel完全顯示?
我的一個要求是應該顯示這些列中的所有數據。如果列寬(無論出於何種原因)不足以顯示所有數據,則文本應該換行到下一行。目前文本只是被切斷。
這段代碼說明了這個問題:在運行上述SSCCE時
import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class TableTest { public static void main(final String[] args) { final JTable jTable = new JTable(); jTable.setModel(new DefaultTableModel() { private static final long serialVersionUID = 1L; @Override public Object getValueAt(final int row, final int column) { final StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<font color=\"red\">this text is red</font> "); sb.append("<font color=\"green\">this text is green!</font>"); sb.append("</html>"); return sb.toString(); } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return 2; } }); final JFrame jFrame = new JFrame(); jFrame.getContentPane().add(jTable); jFrame.setSize(120, 80); jFrame.pack(); jFrame.setTitle("Table test"); jFrame.setLocationRelativeTo(null); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.setVisible(true); } }
我的問題可能會變得更加清晰。如果JFrame被調整大小,我想要自動修改行高以允許顯示JPanel的全部內容。
由於HTML的要求,我無法使用JTextArea。
感謝,
本