2009-04-06 6 views
8

Sto scherzando con DefaultStyledDocument e sto cercando di capire il modo giusto per impostare uno stile per il carattere corretto monospaced. Con il termine "corretta" Voglio dire che il font selezionato è: (? C'è un modo standard per fare questo in Java)il modo giusto per selezionare caratteri a spaziatura fissa in Swing

  1. Un font a spaziatura fissa che esiste sul computer dell'utente
  2. Un tipo di carattere specificato da preferenze dell'utente
  3. Se non è presente un font specificato, verrà ricollegato al font standard a spaziatura fissa ("Monospaced").

Questo funziona:

StyleConstants.setFontFamily(mainStyle, "Monospaced"); 

e questo funziona anche:

StyleConstants.setFontFamily(mainStyle, "Lucida Console"); 

ma io non riesco a capire come dire se la famiglia di caratteri in questione sia presente sul macchina dell'utente (non esiste un valore di ritorno per setFontFamily) ed è un font a spaziatura fissa. Se uso "Lucida Consoleq" sembra che usi qualunque sia il carattere predefinito.

risposta

2

Penso che si desidera questo

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

Vedi javadoc

+1

devo elencarli tutti? non c'è un modo per testare per vedere se esiste uno? –

3

Vedere la javadoc per java.awt.Font. Sembra che tu possa essere in grado di utilizzare il metodo public static Font decode(String str) per ottenere ciò che desideri. L'ultimo paragrafo del javadoc per questo metodo dice:

La dimensione predefinita è 12 e lo stile di default è semplice. Se lo str non è specificare una dimensione valida, il font restituito ha una dimensione di 12. Se str non specifica uno stile valido, il font restituito ha uno stile di PLAIN. Se si specifica per non specificare un nome di carattere valido nell'argomento , questo metodo restituirà un carattere con il nome di famiglia "Finestra di dialogo". Per determinare quali nomi di famiglia di font sono disponibili sul sistema, utilizzare il metodo GraphicsEnvironment.getAvailableFontFamilyNames() . Se str è nullo, un nuovo font è restituito con il nome di famiglia "Dialog", una dimensione di 12 e uno stile PLAIN .

Se la famiglia di caratteri che stai cercando non esiste, otterrai "Finestra di dialogo" restituita. Finché non lo ottieni come valore di ritorno, esiste la famiglia di caratteri.

3

Monospaced è un nome virtuale (come Dialog) che Java eseguirà il mapping sul carattere predefinito a larghezza fissa del sistema.

+1

Ma non voglio il default, perché sembra un po 'schifoso. Voglio tornare all'impostazione predefinita se non riesco a trovare quello che voglio. –

Problemi correlati