Obtenir JTextArea pour afficher la police à largeur fixe sans anti-crénelage
Quelqu'un sait comment obtenir JTextArea pour afficher une taille fixe
police sur toutes les plateformes?
Je veux faire un simple éditeur de code avec enregistrer/ouvrir des fonctionnalités,
qui est assez simple, mais je tiens à mettre la police à
de taille fixe, de préférence courier new.
Le problème est que courier new est la propriété exclusive apparemment, et pas
seulement il n'est pas installé par défaut sur de nombreux systèmes, mais sur la plupart des
les systèmes modernes, il est mis à cleartype être par défaut, ce qui rend
il regarde comme des ordures.
Je suis tenté de faire mon propre Composite avec mise à jour-rendu de la peinture et de la
réinventer le JTextArea, et enregistrer les polices que fixe la taille des bitmaps, mais
cette approche semble stupide, et beaucoup de temps.
Je voudrais inclure un gratuit de polices de taille fixe pour le projet et
utiliser cette police sur toutes les plateformes, ce qui semble possible. Cependant,
les systèmes modernes apparaissent à force de douceur, de toutes les polices, qui, je le
comme pour l'empêcher de le faire.
Malheureusement, il semble que Swing automatiquement respecte les préférences système
donc, sans détruire les paramètres de l'utilisateur, il semble être un no go.
Donc, en bref, est-il un moyen d'obtenir JTextArea pour afficher une largeur fixe
la police et de désactiver le lissage des polices/anticrénelage (ou au moins à bascule), ou
est-ce une tâche impossible, à l'aide de swing?
Merci d'avance!
source d'informationauteur Dmitry
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la logique de la police "monospaced". Alors qu'il garantit avoir une police qui a la même taille pour tous les personnages, ce ne sera pas la même sur toutes les plate-forme.
Alternativement, vous pouvez rechercher un "libre" de la police qui répond à votre besoin, incorporer les polices dans le code et de le charger avec
java.awt.Font.createFont(int, InputStream)
.Je suis venu près d'une solution à l'aide de
JTextPane
au lieu deJTextArea
en définissant le type de contenu de laJTextPane
àtext/html
et définir le texte comme unhtml
contenu.<tt>
balise est ce qui rend le texte monospaced et tous les espaces blancs et les caractères de nouvelle ligne de latext
ont remplacé avec html l'espace de l'entité et<br>
tag, respectivement. J'ai testé la sortie de Windows et Ubuntu Os et ils étaient les mêmes.