Immer JTextArea zur Anzeige festbreitenschrift ohne antialiasing
Weiß jemand, wie man JTextArea anzeigen eine Feste Größe
schriftart ist auf allen Plattformen?
Möchte ich einen einfachen code editor mit speichern/öffnen-Funktionalität,
die ist einfach genug, aber ich würde gerne eine schriftart
eine Feste Größe, vorzugsweise courier new.
Das problem ist, dass courier new proprietär ist offenbar, und nicht
nur ist es nicht installiert ist standardmäßig auf vielen Systemen, aber auf die meisten
moderne Systeme, es ist cleartype standardmäßig verwendet werden, die macht
Sie sehen aus wie Müll.
Ich versucht bin, um meine eigene JPanel mit update-render-Farbe und
neu erfinden der JTextArea, und das speichern von fonts, die als Feste Größe der bitmaps, aber
dieser Ansatz erscheint dumm, und sehr zeitaufwendig.
Ich würde gerne eine Kostenlose schriftart mit fester Größe, um das Projekt und
verwenden Sie diese schriftart ist auf allen Plattformen, die möglich erscheint. Allerdings
moderne Systeme erscheinen, um Kraft-glätten Sie alle Schriftarten, die würde ich
wie um zu verhindern, dass es zu tun.
Leider scheint es, dass die Schaukel automatisch hält sich an system-Einstellungen
so ohne das zu zerstören, Benutzer-Einstellungen, es scheint ein no-go.
Also kurz, gibt es einen Weg, um JTextArea anzeigen eine Feste Breite
schriftart und deaktivieren Sie die Schriftarten-Glättung/antialiasing (oder zumindest ändern), oder
ist diese Aufgabe unmöglich mit swing?
Dank Voraus!
InformationsquelleAutor Dmitry | 2013-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die schriftart "monospaced". Während es sich garantiert um eine Schrift, die gleiche Größe für alle Zeichen, es wird nicht die gleiche sein für alle Plattform.
Alternativ könnte man schauen, eine "freie" Schrift, die Ihrem Bedarf entspricht, Betten Sie die schriftart in mit code und laden Sie es mit
java.awt.Font.createFont(int, InputStream)
.Es gibt mehrere Möglichkeiten zum deaktivieren Sie anti-aliasing: 1)
System.setProperty("awt.useSystemAAFontSettings","false");
System.property("swing.aatext", "false"); 2) You can set the RenderingHints on the
Graphics-Objekt despaintComponent
Methode zum deaktivieren der TEXT_ANTI_ALIASING (((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, Boolean.FALSE);
aber Sie müssen nicht eine absolute Garantie, dass jemand wird sich auch nicht ändern, dass danach.Ich bin nicht besorgt über die Veränderung nachworte, ich bin besorgt über die Standard-settings :). Vielen Dank!
Kleine Korrektur, Sie können nicht
Boolean.FALSE
für den Hinweis Wert. VerwendenRenderingHints.VALUE_TEXT_ANTIALIAS_OFF
statt. Tut mir Leid, dass.cb = new JComboBox(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()); JSpinner spinner = new JSpinner(new SpinnerNumberModel(12, 4, 240, 1)); JCheckBox Kursiv = new JCheckBox("Kursiv"); JCheckBox bold = new JCheckBox("Fett"); Fügen Sie alle diese in ein JPanel, füge die wraping-code und Sie sind fertig.
InformationsquelleAutor Guillaume Polet
Kam ich nahe an einer Lösung mit
JTextPane
stattJTextArea
durch die Einstellung der content-type desJTextPane
zutext/html
und setzen Sie den text alshtml
Inhalt.<tt>
tag macht den text monospaced und alle Leerzeichen, neue-Zeile-Zeichen von dertext
ersetzt haben, die mit html Raum Einheit und<br>
tag, beziehungsweise. Getestet habe ich die Ausgabe in Windows-und Ubuntu-Betriebssysteme und Sie waren die gleichen.InformationsquelleAutor CLOUGH