Расчет требуемого пространства отображения для различных подклассов JComponent - PullRequest
1 голос
/ 26 июля 2010

Для моего текущего проекта я пишу графический интерфейс на основе JTable.Одной из основных функций является возможность настраивать размеры всех ячеек во время выполнения в зависимости от содержимого (которое изменяется со временем).В настоящее время все ячейки имеют одинаковую высоту и ширину при запуске приложения.Я хотел бы изменить это на более сложный подход.Мне было интересно, можно ли как-то определить пространство, необходимое для «контента», чтобы он отображался правильно.Это без большого пустого пространства или сокращения чего-то.

«Содержимое» - строка для начинающих.Он загружен из базы данных, и я не могу делать какие-либо предположения об этом.Это может быть ноль.В этом случае должен быть любой размер по умолчанию для соответствующей ячейки.

В долгосрочной перспективе будут отображаться все виды контента, такие как изображения, видео и так далее.

Я пытался работать с FontMetrics, чтобы вычислить длину строк.Но так как я использую JTextPanes для их отображения, я не могу заставить его работать точно.Я думаю, что это связано с JTextPanes автоматическим переносом слов, потому что иногда строки не заполняются.Это портит мои расчеты.

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

Заранее спасибо, DeKay

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Поскольку вы используете JTextPane для рендеринга, вы можете найти этот вопрос и ответ полезным.

Преобразование textPane.modelToView() всегда выходит на null.

Обратите внимание, что modelToView "Возвращает: координаты в виде прямоугольника ... или ноль, если компонент еще не имеет положительного размера."

Я до сих пор не знаю, как рассчитать количество места, необходимое в целом.

IIUC, ключом к пониманию примера @ camickr является использование setPreferredSize() для включения измененной границы текстовой панели, за которым следует validate(), который "используется для контейнер для размещения его подкомпонентов снова. "

1 голос
/ 26 июля 2010

Может быть, вычисление размера текстовой панели в этом Как я могу измерить / рассчитать размер, который должен отображать сам документ? поможет вам.

0 голосов
/ 26 июля 2010

Чтобы установить высоту строки в JTable, посмотрите на здесь :

public void setRowHeight(int row, int rowHeight)

Чтобы установить ширину столбца, вам нужно взглянуть на API TableCOlumn здесь :

public void setWidth(int width)

Надеюсь, это поможет

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