Получение фактической ширины столбца JTable

Я написал утилиту для отображения занимаемого папками места на диске в дереве папок. Он использует JTable со столбцами для имени папки, занимаемого места, процента занятого места, количества файлов и т. д.

Я хочу реализовать стандартную функцию изменения размера столбца до минимальной ширины, необходимой для самой широкой строки, отображаемой, когда пользователь дважды щелкает границу между столбцом и его следующим столбцом. Я посмотрел примеры того, как это сделать, и они отлично работают для столбцов, содержащих и отображающих строку.

Столбец имени моей папки добавляет значок к имени папки; изображение на значке указывает, свернута ли папка, развернута или не имеет дочерних элементов, и имеет ширину, которая показывает, насколько глубоко она находится в иерархии папок (дочерние папки имеют отступ от своих родителей и т. д.)

Столбец «Мой размер» использует значение в байтах и ​​преобразовывает его в значение из 1–3 цифр, за которыми следует пробел или буква, указывающая, в байтах, килобайтах, мегабайтах или гигабайтах.

Таким образом, когда код, определяющий ширину столбца, выполняется, он получает ширину строки, но в этих двух случаях ширина строки не является правильной шириной для установки столбца; для одного из них, да и вообще для ячеек JTable, просто получение ширины строки не может дать ширину столбца.

Итак, как я могу получить ширину минимально необходимого отображения содержимого ячейки JTable, даже если содержимое не является строкой?


person arcy    schedule 13.03.2021    source источник
comment
Благодаря @camickr - фактический ответ на мой вопрос (включенный в его/ее ссылку) заключается в том, что JTable имеет метод prepareRenderer(); это возвращает компонент ячейки, у которого затем можно запросить размер и тому подобное.   -  person arcy    schedule 14.03.2021