
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.11.2016, 18:08
|
|||
|---|---|---|---|
|
|||
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
Здравствуйте! Существует тривиальная задача печати данных. Решил сделать это пихнув их в TableView. В целом вопросов это все не вызывает, ибо, скажем, таблица "с экрана" печатается как положено, но тут немного другая ситуация и я наткнулся на нечто, что меня полностю тормознуло. Итак, печатающий метод получает лист сущностей, создает таблицу, куда они закидываются, и печатает эту радость. Выглядит это так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. Итак собственно проблема: все красиво, НО ширина таблицы меньше, чем суммарная ширина столбцов. Часть столбцов тупо не влезает, ибо столбцы уже после печати "расползаются", что для меня вообще не очевидно. Как изначально "инициировать" это присвоение размеров до печати? Пробовал: - printableTable.requestLayout() и refresh() в разных местах - не помогает - printableTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY) - помогает, ибо все столбцы становятся равными 80 и талица четко вписана в лист, НО тогда информация внутри столбцов обрезается (содержимое длиннее ширины столбца). Вот как-то так. Никак не пойму чего злосчастной таблице предложить, чтобы она столбцы выставила по ширине до начала печати дабы я ее нормально отмасштабировать смог. Заранее спасибо всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.11.2016, 18:56
|
|||
|---|---|---|---|
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
RuslanGab, Мммммм... я не печатал, но если эту таблу не в динамике строить, а прямо в дизайнере FXML. То печать будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2016, 14:20
|
|||
|---|---|---|---|
|
|||
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
Petro123, Добрый день! Если таблица "рабочая" представленная на сцене и печатать непосредственно ее (такое у меня есть в другом фрагменте), то все в порядке. Эта таблица уже имеет размеры, с которыми можно работать. А вот когда я ее "на лету" создаю возникает такая проблема... Причем опять же: она печатается. Все нрмально. Именно что ее столбцы выравниваются отчего-то именно после печати, вот я и думаю что с ней такого там происходит и как бы это еще "до печати" получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2016, 14:37
|
|||
|---|---|---|---|
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
RuslanGabЕсли таблица "рабочая" представленная на сцене и печатать непосредственно ее (такое у меня есть в другом фрагменте), то все в порядке. Вот и забей. По крайней мере можно окно невидимым сделать. Ну или печатать то что видно на экране (предпросмотр). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2016, 14:45
|
|||
|---|---|---|---|
|
|||
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
Petro123, Ну да. Согласен. Сделать можно и даже не сказать что это трудно, НО ведь хочется сделать ХОРОШО. Не люблю я костыли:) Тем более оно же работает по сути своей. Она даже размеры столбцов совершенно верно по содержимому подгоняет, но уже ПОСЛЕ, блин, печати (посмотрите в коде в самом низу закоментированные строки). Витает мысль лезть в дебаггер с последующей обработкой ее Skin через рефлексию, но блин это уже тоже костыль вот и думаю что что-то а-ля "refresh", "sktivateScene" etc. должно быть но я это просто найти не могу:( Ведь это при печати происходит на каком-то этапе! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2016, 14:47
|
|||
|---|---|---|---|
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
RuslanGab, дело ваше. Я между динамикой (сколько у вас строк) и статикой (FXML разметка) всегда выбираю статику. Там всё инициализируется автоматом платформой. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.11.2016, 16:00
|
|||
|---|---|---|---|
|
|||
Помогите с печатью TableView (JavaFx 8) |
|||
|
#18+
Докопался! Не могу сказать что решение мне нравится, но работает. С помощью дебаггера нашел что делает этот принтер, отчего столбцы получают свою щирину, так что если кому интересно... В классе J2DPrinterJob при получении информации о странице вызывается геттер объекта Node, перед которым вызывается метод "initScene": Код: java 1. 2. 3. 4. Этот метод само собой универсален, так что в моем случае я его весьма конкретно обкорнал и вышел он (т.е. собственно все решение) в моем случае, когда я знаю что работаю в потоке JavaFX и родителей у моей таблицы никаких нет и сама она не анимирована седующим: Код: java 1. 2. 3. 4. Я чересчур глубоко не лез, но основная фишка тут в последней строке, которая для имеющегося объекта group (ясно его сначала надо должным образом инициализировать) вызывает layoutChildren(), где и происходит нужное мне таинство. После этого столбцы получают свою ширину и гирина таблице становится равной ширине всех столбцов. Дальге на нее остается налодить трансформацию соразмерно размеру листа и т-т-т готово. Жаль что нет чего-то вроде готового метода для подобной фигни - придется его засунуть в статический класс и будет мне счастье, чтобы где еще понадобится этой фигрей не заниматься:) Надеюсь может кому поможет. Может есть путь элегантнее и короче - есди так тапками не кидайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2123461]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 401ms |

| 0 / 0 |
