Вопрос

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

Как я могу получить и установить следующую информацию для столбца #K в JXTABE, где k является номером столбца в заказе модели таблицы? Это не так просто, как кажется, или, по крайней мере, мне не хватает какой -то сложной информации.

  • ширина колонки
  • видимость столбца
  • Порядок столбца

TableColumnModelExt.getColumns() Включает в себя эту сумасшедшую ноту, которую у меня возникают проблемы с пробором:

java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)

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

ПРИМЕЧАНИЕ. Порядок столбцов в списке зависит от того, включены ли невидимые столбцы, в первом случае это порядок вставки в последнее, это текущий порядок видимых столбцов.

Кроме того, я знаю, как использовать JTable.convertColumnIndexToView(), но он возвращает -1 для скрытых столбцов и не оставляет информации о том, какой порядок скрыт столбец, если бы он снова стал видимым. Jxtable знает эту информацию, потому что вы можете восстановить видимость столбца, и она ставит столбец, где она была до ее скрытия.

Это было полезно?

Решение

Если я правильно вас понимаю, вы после индекса столбца представления, скрытый столбец будет иметь, если он станет видимым снова. Это не поддерживается напрямую.

Для сохранения/восстановления Класс Xproperties (Не официально поддерживается, но работая гладко), делая это в контексте Appframework, что может дать вам представление о том, как это сделать.

Редактировать

Чтобы получить TableColumn от ModelIndex, получите все столбцы, циклу и сравните ModelIndex. Некоторый псевдокод в псевдо-методе GetColumnfor (ModelIndex):

List allColumns = table.getColumns(true);
forEach {
   if (column.getModelIndex() == modelIndex) {
        return column;
   }
return null;

Другие советы

Подумайте об использовании Качание приложения (JSR-296)

Хотя этот проект теперь мертв Afaik, я думаю, что это лучшая отправная точка, чем реализация этой функции с нуля. (Это открытый исходный код.)

Если вы создаете свое приложение на платформе Netbeans (которую я очень рекомендую), посмотрите на мой блог о том, как использовать эти две структуры вместе:

http://puces-blog.blogspot.com/2009/04/netbeans-platform-meets-swing.html

Примечание: есть также Лучшая структура приложения Swing

The Better Swing Application Framework is a fork of the original Swing Application Framework (appframework) reference implementation of JSR 296. Since August 2009, the original Swing Application Framework project has been on hold, and therefore this fork was created to carry on the work until the original project resumes. 

Я мало что знаю об этом, но это может быть даже лучшей отправной точкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top