измерение размера заполнения заголовка столбца SWT / JFace

У меня есть несколько таблиц в приложении eclipse SWT. Это таблицы Table/TableViewer, состоящие из заголовка, строки внизу слева с текстом и ряда изображений, идущих поперек. Помимо текстового столбца имеется 32 столбца, пронумерованных от 0 до 31. В Windows 7 и XP в классическом режиме текст в порядке, но в обычном режиме XP они усекаются, поэтому они выглядят как 0 1 2 3 4 5 6 7 8 9 1. 1. 1. 1. 1. и т. д. В любом случае места для текста явно достаточно.

Если я просто установлю ширину по умолчанию на 28 вместо 25, как я обнаружил, тогда они будут в порядке, но, очевидно, это не очень хорошо, так как тогда мне нужно больше места для интерфейса в Windows 7 и XP Classic, где это было уже ок. Я попытался получить среднюю ширину из fontmetrics, но текст возвращается как 5 во всех режимах. Я не могу найти никакого способа уменьшить отступы (что было бы лучшим способом) или узнать, сколько отступов есть (что подойдет). Нужно ли рисовать заголовки столбцов вручную?

ps: извините за JFace / SWT, только начали с этого и еще не поняли различий!


person Woody    schedule 10.10.2011    source источник


Ответы (2)


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

person p12t    schedule 10.10.2011
comment
Необходимо сохранить самый большой столбец, так как, очевидно (хотя и не на win7), столбцы с однозначными цифрами меньше, но после перерисовки он теперь может изменять размер между XP и XP в классическом режиме. Как ни странно, в Win7 он возвращается больше, чем был раньше, хотя в этом он не усекался, поэтому интерфейс вырос, но, по крайней мере, он последователен, спасибо - person Woody; 10.10.2011

Вы должны использовать TableLayout для более динамичного расчета размера заголовков вашей таблицы. Хорошей отправной точкой является следующая статья в блоге: http://eclipsenuggets.blogspot.com/2007/11/one-of-less-prominent-novelties-in.html

person Tom Seidel    schedule 10.10.2011
comment
Спасибо, но я не уверен, что следую. Столбцы не изменяются в размере, кроме метки, и не имеют никакого отношения к размеру окна. В идеальном мире они должны быть как можно меньше, не обрезая текст. TableLayout, похоже, не имеет ничего, что могло бы дать мне наименьшее возможное пространство. - person Woody; 10.10.2011