8

On a high-resolution screen (my example, Windows 8.1) is my Java application. The menu in particular is very small, and it's almost impossible to select a menu item.

In the normal screens (72 DPI) everything is OK.

Font with a fixed size (in my case it would have <80px), is a poor choice. 72 DPI screens show it very large.

How can I make the fonts scalable so that the program conforms to its size, or the user gets the possibility of setting?

mKorbel
  • 109,525
  • 20
  • 134
  • 319
Andiamo
  • 81
  • 1
  • 2

1 Answers1

5

You can change the default font size in a single place by accessing your PLAF: Java Swing on high-DPI screen

but this will still make the application look bad, because inter-component spaces will be in pixels, and therefore will not scale with font size. See http://www.javalobby.org/java/forums/t101878.html for a longer discussion.

My recommendation is to use a DPI-aware layout library, such as MigLayout, which supports specifying sizes either in pixels or in DPI-aware mm or cm. You can then couple both font-scaling and DPI-aware spacing by using FontMetrics to find the correct size for your fonts.

Community
  • 1
  • 1
tucuxi
  • 17,561
  • 2
  • 43
  • 74