Kann ich die DPI-Auflösung meiner Java Swing-Anwendung einstellen, ohne die DPI-Einstellungen des Systems zu ändern?

9

Ich habe eine Java-Anwendung, die den Stoff LookAndFeel mit Windows als Zielplattform verwendet, und ich möchte die DPI-Einstellung meiner Anwendung erhöhen ohne die Systemeinstellung zu ändern.

Ich möchte dies tun, weil ich den Benutzer nicht zwingen will, Windows neu zu starten und weil viele Windows-Anwendungen Probleme mit sehr hohen DPI-Einstellungen (& gt; 120) zu haben scheinen

PS: Mir ist bewusst, dass das Substance LaF erlaubt, die Schriftgröße zur Laufzeit zu skalieren, aber auf diese Weise wird nur die Höhe meiner Steuerelemente skaliert, nicht die Breite. Ich möchte, dass meine GUI vollständig skaliert wird, wie es passieren würde, wenn ich die DPI-Einstellung des Systems einstellen würde.

    
Daniel Rikowski 09.07.2009, 06:51
quelle

3 Antworten

5

Ich weiß nicht, ob das möglich ist. Das Look & amp; feel müsste es unterstützen, und soweit ich weiß, ist das Windows Look & amp; Feel nicht. Hier ist ein Hack, den Sie in Betracht ziehen können: Iterieren Sie alle in Ihrem Look definierten Schriften und definieren Sie sie neu, um etwas größer zu werden. Hier ist ein Code-Snippet, das dies tut:

%Vor%

Ich nehme an, Sie könnten einen Schritt weiter gehen und Skalengrenzen proportional neu definieren, aber das wird sehr schnell sehr kompliziert

    
Joel Carranza 12.11.2009, 19:48
quelle
1

Die Antwort scheint also so zu sein: Nein, du kannst nicht. Das ist wirklich ein Mist, denn es ist ein Schmerz zu testen.

    
Epaga 05.03.2010 09:06
quelle
1

Ja, Sie können das, aber Sie müssen es auf JRE 9 ausführen.

Dies liegt daran, dass sich die Java-Laufzeitumgebung als "DPI-fähig" deklariert hat, aber nicht wirklich für AWT und Swing unterstützt hat. Java-Anwendungen wurden auf der Grundlage von Pixeln skaliert und gerendert, anstatt dass sie richtig skaliert wurden, einschließlich HiDPI-Anzeigen. Wie auch immer, das wurde kürzlich gelöst. Siehe das Problem JEP 263: HiDPI-Grafik unter Windows und Linux und das Upgrade .

Das Erhöhen der Schriftgröße funktioniert also nicht (weil es den Rest der Dinge nicht erhöht); Das jvm-Argument -Dsun.java2d.dpiaware=false funktioniert nicht (weil es nicht wirklich unterstützt wurde); und die Manifest-Datei + Registry-Bearbeitung (für Windows) funktioniert einfach nicht.

Lösung: Sie müssen es auf JRE 9 ausführen, da es diese Funktion wirklich unterstützt.

    
Sergio Muriel 01.08.2017 00:02
quelle