Java 21 Swing Nimbus: на дисплеях высокого разрешения Windows/Linux графический интерфейс крошечныйJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java 21 Swing Nimbus: на дисплеях высокого разрешения Windows/Linux графический интерфейс крошечный

Сообщение Anonymous »

Существует много старых вопросов по теме масштабирования Java для Windows/Linux, на которые нет четкого ответа. Знает ли какой-нибудь эксперт по Swing о каких-либо обновлениях, например, для Nimbus?
Я написал действительно хорошее приложение Swing на компьютере с экраном 1920x1080 пикселей. Сегодня я увидел приложение на экране с высоким разрешением, и оно оказалось крошечным.
Я не знаю, как решить эту проблему. Я много гуглил, но не смог найти хорошего ответа. Я нашел JEP 263 https://bugs.openjdk.org/browse/JDK-8055212
В нем говорится, что проблема решена. А не как исправить код?
Это Nimbus, который я использую:

Код: Выделить всё

NimbusLookAndFeel nimbus = new NimbusLookAndFeel();
UIManager.setLookAndFeel(nimbus);
UIManager
.put("control", Color.WHITE);
UIManager.put("nimbusBlueGrey", ApplicationColors.getLightGrayGold());
UIManager.put("nimbusBase", ApplicationColors.getDarkGold());
UIManager.put("textForeground", Color.BLACK);
UIManager.put("nimbusFocus", ApplicationColors.getSunflowerYellow());
UIManager
.put("ToolBar:Button.contentMargins", new Insets(5, 15, 5, 15));
UIManager
.put("TextField.background", ApplicationColors.getLightYellow());
UIManager.put("ComboBox.forceOpaque", false);
UIManager.put("TitledBorder.border", new Insets(10, 10, 10, 10));
UIManager.put("TitledBorder.position", TitledBorder.ABOVE_BOTTOM);
UIManager.put("TitledBorder.font", ApplicationFonts.getGermanFont(16F));
UIManager.put("TitledBorder.titleColor", Color.GRAY);
UIManager.put("Table.opaque", false);
UIManager.put("List.opaque", false);
UIManager.put("Table.cellRenderer", false);
UIManager.put("OptionPane.buttonFont", ApplicationFonts.getGermanFont(16F));

UIManager.put("OptionPane.cancelButtonText", translator.realisticTranslate(Translation.ABBRECHEN));
UIManager.put("OptionPane.yesButtonText", translator.realisticTranslate(Translation.JA));
UIManager.put("OptionPane.noButtonText", translator.realisticTranslate(Translation.NEIN));
UIManager.put("OptionPane.titleText", translator.realisticTranslate(Translation.BILD_LOESCHEN));

UIManager.put("FileChooser.openButtonText", translator.realisticTranslate(Translation.OEFFNEN));
UIManager.put("FileChooser.cancelButtonText", translator.realisticTranslate(Translation.ABBRECHEN));
UIManager.put("FileChooser.saveButtonText", translator.realisticTranslate(Translation.SPEICHERN));
UIManager.put("FileChooser.cancelButtonToolTipText", translator.realisticTranslate(Translation.ABBRECHEN_DER_AUSWAHL));
UIManager
.put("FileChooser.saveButtonToolTipText",
translator.realisticTranslate(Translation.AUSGEWAEHLTE_DATEI_SPEICHERN));
UIManager
.put("FileChooser.openButtonToolTipText",
"Ausgewählte Datei öffnen");
UIManager.put("FileChooser.upFolderToolTipText", "Eine Ebene höher");
UIManager.put("FileChooser.homeFolderToolTipText", "Home");
UIManager
.put("FileChooser.newFolderToolTipText",
"Neuen Ordner erstellen");
UIManager.put("FileChooser.listViewButtonToolTipText", "Liste");
UIManager.put("FileChooser.detailsViewButtonToolTipText", "Details");
UIManager.put("FileChooser.lookInLabelText", "Suchen in:");
UIManager.put("FileChooser.fileNameLabelText", "Dateiname:");
UIManager.put("FileChooser.filesOfTypeLabelText", "Dateityp:");
UIManager
.put("FileChooser.acceptAllFileFilterText",
"Alle Dateien (*.*)");
UIManager.put("FileChooser.folderNameLabelText", "Ordnername:");
UIManager.put("FileChooser.openDialogTitleText", translator.realisticTranslate(Translation.OEFFNEN));
UIManager.put("FileChooser.saveDialogTitleText", translator.realisticTranslate(Translation.SPEICHERN));
UIManager.put("OptionPane.background", ApplicationColors.getWhite());
Как масштабировать экраны Windows/Linux с высоким разрешением?
ОБНОВЛЕНИЕ
Я нашел это в Интернете:
Значение DPI для каждого монитора означает следующее:

Код: Выделить всё

true - JRE-managed HiDPI
false - IDE-managed HiDPI
Если вам нужно протестировать IDE с масштабом 1.0, есть два варианта:

Код: Выделить всё

In JRE-managed HiDPI mode:
-Dsun.java2d.uiScale.enabled=true
-Dsun.java2d.uiScale=1.0

In IDE-managed HiDPI mode:
-Dsun.java2d.uiScale.enabled=false
-Dide.ui.scale=1.0
Я проверю это и сообщу как можно скорее.
ОБНОВЛЕНИЕ
Минимальный пример приложения будет будет много кода, поскольку я использую свои собственные менеджеры макетов, расширенные из LayoutManager2. Конечно, я устанавливаю размеры в пользовательском интерфейсе. Но оно все равно должно масштабироваться.
Изображение

Изображение

Изображение


Подробнее здесь: https://stackoverflow.com/questions/792 ... ui-is-tiny
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»