Java 如何根据在jtable单元格中输入的文本内容增加行的高度

Java 如何根据在jtable单元格中输入的文本内容增加行的高度,java,swing,jtable,Java,Swing,Jtable,我有一个可编辑的jtable。当用户使用文本写入单元格时,如果输入的文本更适合单元格大小,则表中的行高度必须增加以适合用户输入的新文本。你能告诉我如何根据输入的文本行增加行高吗 有人能帮我吗? 我已尝试将JTextArea添加到行中,但这不起作用。JTable组件中的行高度基于指定的值,而不是该行中使用的渲染器的首选高度: 您需要计算新输入文本所需的高度。根据单元使用的渲染器,您可以使用例如JTextArea.getLineCount()来确定文本包含多少行 然后,您需要检索渲染器使用的字体高度

我有一个可编辑的jtable。当用户使用文本写入单元格时,如果输入的文本更适合单元格大小,则表中的行高度必须增加以适合用户输入的新文本。你能告诉我如何根据输入的文本行增加行高吗

有人能帮我吗?
我已尝试将JTextArea添加到行中,但这不起作用。

JTable组件中的行高度基于指定的值,而不是该行中使用的渲染器的首选高度:


您需要计算新输入文本所需的高度。根据单元使用的渲染器,您可以使用例如
JTextArea.getLineCount()
来确定文本包含多少行

然后,您需要检索渲染器使用的字体高度,并计算出所需的高度

获得该数字后,使用
JTable.setRowHeight(int,int)
更改特定行的高度

大概是这样的:

Component c = renderer.getTableCellRendererComponent(theTable, theTable.getValueAt(row, col), false, false, row, col);
Font f = c.getFont();
FontMetrics fm = c.getFontMetrics(f);

// this cast depends on the way your renderer is implemented !!!!
int lineCount = ((JTextArea)c).getLineCount();

tnt fheight = fm.getHeight();
int rowHeight = lineCount * fheight;

theTable.setRowHeight(row, rowHeight);

我希望jtable的宽度是固定的。所以,当输入的文本超过宽度时,它应该出现在单元格的下一行。您的链接现在无效。请将其升级或从您的问题中删除(在我看来,这有点像)。