Как увеличить высоту строки в jtable в зависимости от содержимого текста, введенного в ее ячейку - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть jtable, который можно редактировать. Как и когда ячейки пишутся с текстом пользователем, если введенный текст больше соответствует размеру ячейки, тогда высота строки в таблице должна увеличиваться, чтобы соответствовать новому тексту, введенному пользователем. Не могли бы вы сказать мне, как увеличить высоту строки в зависимости от введенных строк текста.

Может ли кто-нибудь помочь мне в этом? Я пытался добавить JTextArea в строку, но это не работает.

Ответы [ 2 ]

7 голосов
/ 22 ноября 2011

Вам нужно будет рассчитать необходимую высоту для вновь введенного текста.В зависимости от того, какое средство визуализации вы используете для ячейки, вы можете использовать, например, 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);
0 голосов
/ 22 ноября 2011

Высота строки в компоненте JTable основана на присвоенном значении, а не на предпочтительной высоте средств визуализации, используемых в этой строке:

www.exampledepot.com / egs / javax.swing.table / RowHeight.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...