Est-ce que Java prend en charge l'affichage retina avec un rendu haute définition, par exemple pour le texte ? Ou est-il traité comme une application non modifiée, et donc soumise à la mise à l'échelle ?
Réponses
Trop de publicités?La version Java 6 JRE d'Apple prendra en charge HiDPI, cependant ce n'est pas actuellement pris en charge par la version Java 7 JRE d'Oracle. Il ne fonctionne pas non plus sous les dernières versions de développement de Java 8. Les applications Swing et JavaFX sont floues sur un MacBook Retinia. C'est pourquoi IntelliJ fonctionne toujours avec Java 6. Les applications Eclipse nécessiteront le mode PList mentionné par Jurriaan Mous. Les versions de développement d'Eclipse 4.3 ne nécessitent pas la modification.
De: https://bugs.eclipse.org/bugs/show_bug.cgi?id=382972
Voici la solution de contournement:
Faire "Afficher le contenu du paquet" sur Eclipse.app. Modifier Contents/Info.plist en utilisant votre éditeur de texte préféré. Juste avant
Placez ceci:
NSHighResolutionCapable
Ensuite, accédez au dossier dans lequel Eclipse est stocké et exécutez
touch Eclipse.app
pour que macOS remarque le changement.
Maintenant, la fenêtre d'informations ne montrera pas "Ouvrir en basse résolution" comme étant coché. Lancez Eclipse et profitez de votre nouvelle rétine étonnante.
Je viens de tester ceci sur mon MacBook Pro avec écran Retina, donc la réponse est oui et non - du moins sous Mountain Lion.
Si vous utilisez Java directement à partir de la ligne de commande, la réponse est oui : il se lancera en mode HiDPI et rendra le texte en haute résolution. Les éléments rendus en utilisant Graphics2D seront affichés en mode haute résolution. (Donc, si vous affichez une ligne d'épaisseur de 0,5 pixels AWT et la placez à 0,25/0,75 d'un pixel AWT, elle affichera un seul pixel "rétinien" d'épaisseur.) De même, afficher une image à demi-résolution l'affichera à une résolution "rétinienne".
Donc, au lieu de simplement g.drawImage(image, x, y, observer)
vous devriez faire :
g.drawImage(image, x, y,
image.getWidth(observer)/2,
image.getHeight(observer)/2, observer);
(Sauf si vous avez une largeur/hauteur impair, auquel cas vous devriez probablement utiliser Graphics2D et simplement scale(0.5, 0.5)
pour afficher une image rétinienne.)
Si vous utilisez JavaApplicationStub, alors vous avez besoin de la réponse fournie par Matt Solnit, sinon il se lancera en mode "échelonné". (Sous Mountain Lion, il y a des manœuvres supplémentaires à effectuer liées à Gatekeeper, mais c'est une question différente.)
Notez que cette réponse s'applique à la fois à Mountain Lion et à la version de Java fournie par Apple pour celui-ci (Java 1.6.0_33). Cela peut être différent sous Java 7 d'Oracle pour Mac OS X, et cela peut ne pas fonctionner de la même manière sous Lion.
- Réponses précédentes
- Plus de réponses