Qualcuno sa come ottenere JTextArea per visualizzare un font di dimensioni fisse su tutte le piattaforme?Acquisire JTextArea per visualizzare caratteri a larghezza fissa senza antialiasing
Desidero creare un semplice editor di codice con funzionalità di salvataggio/apertura, , che è abbastanza semplice, ma mi piacerebbe che il font sia di dimensioni fisse, preferibilmente nuovo di corriere.
Il problema è che Courier New è proprietario a quanto pare, e non solo non è installato di default su molti sistemi, ma nella maggior parte dei sistemi moderni, è impostato per ClearType essere di default, il che rende apparire come spazzatura .
sono tentato di fare le mie JPanel con update-render-vernice e reinventare la JTextArea, e salvare i font come bitmap di dimensione fissa, ma questo approccio sembra stupido, e molto tempo.
Vorrei includere un carattere di dimensione fissa gratuito per il progetto e utilizzare quel tipo di carattere su tutte le piattaforme, che sembra possibile. Tuttavia, i sistemi moderni sembrano forzare tutti i tipi di carattere, cosa che vorrei fare a per impedirne l'esecuzione.
Purtroppo, sembra che Swing risponda automaticamente alle preferenze di sistema così senza distruggere le impostazioni dell'utente, sembra essere un no go.
Così, in breve, v'è un modo per ottenere JTextArea per visualizzare un carattere larghezza fissa e carattere disabilitare levigatura/antialiasing (o almeno toggle), o questo compito impossibile con oscillazione?
Grazie in anticipo!
Grazie, questo risponde alla domanda, ma sono ancora curioso di sapere se posso fare in modo che il font monospazio garantisca che non sarà antialias. È possibile? – Dmitry
@Dmitry Esistono diversi modi per disabilitare l'anti-aliasing: 1) ['System.setProperty (" awt.useSystemAAFontSettings "," false ");'] (http://docs.oracle.com/javase/6/docs /technotes/guides/2d/flags.html#aaFonts) 'System.property (" swing.aatext "," false "); 2) È possibile impostare RenderingHints sull'oggetto 'Graphics' del metodo' paintComponent' per disabilitare TEXT_ANTI_ALIASING ('((Graphics2D) g) .setRenderingHint (RenderingHints.KEY_TEXT_ANTIALIASING, Boolean.FALSE); 'ma non avrai la garanzia assoluta che qualcuno non cambierà quello dopo. –
Non sono preoccupato per il cambio afterwords, sono preoccupato per le impostazioni di default :). Molte grazie! – Dmitry