Я написал действительно хорошее приложение 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());
ОБНОВЛЕНИЕ
Я нашел это в Интернете:
Значение DPI для каждого монитора означает следующее:
Код: Выделить всё
true - JRE-managed HiDPI
false - IDE-managed HiDPI
Код: Выделить всё
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