|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Всем привет! Вопрос возможно, простой, но ответ не нашел пока. Вывел комп на телек, разрешение 4096*2160. Сама операционка показывает нормально, сама IDE (JDeveloper) работает нормально. Swing-формы и компоненты в дизайне IDE тоже отображаются нормально. Запускаю проект со swing-формами, все формы микроскопические, кнопки микроскопические и надписи на них соответственно тоже. Пробовал менять разрешение в операционке - бесполезно (в телеке оно похоже не меняется или не нашел), но суть, что все остальное отображается нормально. Этот же проект запускаешь на обычном мониторе (на котором изначально делался проектик и на аналогичных мониторах), все отображается корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 11:02 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
JDS, Скрины где? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 11:33 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Swing обычно имеет несколько Look and Feel-s. Поробуй попереключать их. Как тут. https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html Да и скрины-бы не помешали. Предположительно swing в том Look&Feel использует растровую графику для иконок для очень высокого разрешения нет подходящей картинки в ресурсах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 13:06 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
JDSВывел комп на телек, разрешение 4096*2160. Swing рисует "как есть", то есть не масштабирует. Он изначально требует размер, который программист задаёт где-то в программе, либо по дефолту имеется в JVM, как например коэффициент масштабирования для шрифтов. Поэтому на мониторе высотой 1024 точки формочка, например, будет пол-экрана высотой, а на мониторе 2048 та же формочка будет те же 512 точек, то есть четверть экрана высотой. Гуглите на тему масштабирования хотя бы шрифтов, так хотя бы читабельнее будет. Где-то в JVM есть коэффициент, на который домножается логический размер шрифта, выбранный программистом, вот этот коэффициент наверняка можно поправить, но я сам не изучал эти глубины. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 16:14 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Petro123JDS, Скрины где? Ну вообще-то не скрины а код более нужен... Например в swing очень важны правило компоновки layout. И о них надо почитать. И "с дуру" навскидку наваять не получится. По идее у автора должен быть BorderLayout ,он задает Типа Цент Север Юг ,Восток Запад. В центр BorderLayout например кладем другой laypout FlowLayout...(Это горизонтальная комплновка) И если на этот flowlayout накидать кнопок,- у вас оно будет масштабироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 17:04 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Автор же пишет. Кнопки - микроскопические. Что тебе даст layout в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 17:11 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
irbis_al, Вместо анализа автора, ты анализируешь зачем мне скрины. Непродуктивно... Контрпродуктивно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2019, 19:49 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Скрин и код простого примера: Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124.
На скрине под единичкой - как видно в дизайне IDE, под двойкой - как выглядит запущенная формочка с кнопкой. При этом если в IDE по правой кнопке на основной форме Preview Design (как бы предпросмотр), то кнопка масштабируется нормально. Менять Layout пробовал, не помогло или что не так делал. Look and Feel посмотрел. Пробовал и вообще убрать кусок с L&F, который по дефолту вставляется, в main, Пробовал вместо этого куска getSystemLookAndFeelClassName и getCrossPlatformLookAndFeelClassName плюс какие-то темы/скины (metal и тд), эффекта не дало. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 01:03 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
В тестовом примере убрал выход из цикла и кнопка в примере отобразилась уже нормально при запуске: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но в рабочем приложении это снова помогло только частично: кнопки, текстовые поля и шрифт в них по-прежнему мелкие, отмасштабировались только скроллбары в JList (при этом шрифт в них же остался мелкий) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 01:13 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Дальше. Заходим в свойства например JList. Идем в шрифт. Там выбираем галку "Derive the font from the default font" и выставляем галку "Relative" и регулируя параметр рядом (с плюсиком) т.о. вроде бы шрифт можно довести до нужного вида. Но. Например квадратик чекбокса при этом будет все равно микроскопический, а рядом с ним будет надпись большими буквами. Или например кнопка все равно мелкая, а т.к. шрифт в ней большой, надпись не видно. То есть пока нормального решения нет. Не понятно, почему в тестовом примере кнопка все-таки отмасштабировалась, а в рабочем с этим же куском L&F - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 01:35 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
Посмотри как тут https://superuser.com/questions/988379/how-do-i-run-java-apps-upscaled-on-a-high-dpi-display Может поможет. Еще имеет смысл наверное исследовать JavaFx. Фреймворк более современный. И возможно дефекты hi-res там уже обсуждались и фиксились. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 01:46 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
JDS, Вам надо разобраться с layout У Вас GroupLayout Его алгоритм компоновки совсем не тот. https://docs.oracle.com/javase/tutorial/uiswing/layout/group.html И для кроссплатформенной разработки используется нечасто именно из-за сложности анализа экрана.(ведь это может быть в линуксе и на маке в любом разрешении) Или же константы компоновки GroupLayout должны быть не хардкондные а в зависимости от разрешения экрана. Умножаемые на коэффициент начального вашего экрана где всё нормально на результат деления разрешения текущего экрана. Я сам наступил на эти грабли Jdeveloper,он вроде делает визуализирование,и кажется что всё нормально...а на самом деле нет...Надо изучать фундаментально алгоритм компоновки layout... И делать всё с пониманием. В том примере что я вам рассказал выше ,-контролы ,что на лайоте(BorderLayout+FlowLayout+JButton) будут масштабироваться в соответствии с экраном.(лайот становится шире и контрол на нем шире) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 11:05 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
irbis_al, возможно, но пока не уверен, что в layout дело. Нужен бы рабочий простой пример. Если выставляю BorderLayout, то "контрол" всю площадь парента похоже. Но тогда надо под каждую кнопку класть свой парент (который тоже надо масштабировать)? Не что-то не то. myton, спасибо, почитал, попробовал поменять свойство на экзешниках явы - не помогло. Попробовал как там пишут поставить яву постарше, взял 11.2. Тут уже другие грабли. А именно. Не выходит нормально задеплоить в jar этот проектик (при запуске jar-а говорит, что не может инициализировать основной класс, хотя указывал его при создании профиля для деплоя). Еще вариант попробовать девелоперу указать, чтобы он компилил через новую яву, как это можно было делать в нетбинзе например, но в jdeveloper не нашел как. Т.е. с явой посвежее пока не вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 12:26 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
JDSirbis_al, возможно, но пока не уверен, что в layout дело. Нужен бы рабочий простой пример. Если выставляю BorderLayout, то "контрол" всю площадь парента похоже. Но тогда надо под каждую кнопку класть свой парент (который тоже надо масштабировать)? Не что-то не то. myton, спасибо, почитал, попробовал поменять свойство на экзешниках явы - не помогло. Попробовал как там пишут поставить яву постарше, взял 11.2. Тут уже другие грабли. А именно. Не выходит нормально задеплоить в jar этот проектик (при запуске jar-а говорит, что не может инициализировать основной класс, хотя указывал его при создании профиля для деплоя). Еще вариант попробовать девелоперу указать, чтобы он компилил через новую яву, как это можно было делать в нетбинзе например, но в jdeveloper не нашел как. Т.е. с явой посвежее пока не вышло. Вы можете посмотреть примеры в OpenSource ИС...Надо только импортировать образ VirtualBox(Надо иметь 40g для разворачивания) и сразу прямо в Jdeveloper можно смотреть. http://www.cis-pos.com/apex/f?p=116:43 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 12:40 |
|
Масштабирование объектов в swing
|
|||
---|---|---|---|
#18+
JDSПопробовал как там пишут поставить яву постарше, взял 11.2. Тут уже другие грабли. А именно. Не выходит нормально задеплоить в jar этот проектик (при запуске jar-а говорит, что не может инициализировать основной класс, хотя указывал его при создании профиля для деплоя). Еще вариант попробовать девелоперу указать, чтобы он компилил через новую яву, как это можно было делать в нетбинзе например, но в jdeveloper не нашел как. Т.е. с явой посвежее пока не вышло. Не надо ставить новую джаву. 99% это путь в никуда т.к. библиотека Swing - морально устарела. И ее практически не развивают. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 13:07 |
|
|
start [/forum/topic.php?fid=59&msg=39768707&tid=2121505]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 155ms |
0 / 0 |