2011-08-02 10 views
12

Estoy tratando de cambiar la fuente de un JLabel por lo que es BOLD y ITALIC, pero parece que no hay un campo estático definido para hacerlo. ¿Cómo podemos combinar dos estilos para que podamos tener una fuente negrita y cursiva?¿Podemos combinar dos estilos de fuente juntos en Java?

Este código será hacerlo con sólo gordo, utilizando el campo estático BOLD, pero no hay campo definido para ambos negrita y cursiva:

Font font = new Font("Verdana", Font.BOLD, 12); 
label = new JLabel ("New Image") ; 
label.setFont(font); 
label.setForeground(Color.Gray.darker()); 

Respuesta

22

Sí, el parámetro style es visto como una máscara de bits:

new Font("Verdana", Font.BOLD + Font.ITALIC, 12) 
+4

+1 El término "máscara de bits" me enciende ...: D – mre

+4

Bit a bit "o" | es preferible a la suma ("+") –

+0

@Hovercraft: De acuerdo. Como @Paŭlo comenta, '+', '|' y '^' son equivalentes en este contexto. '+' puede ser un poco más legible, pero esa puede ser la conversación de Pascal. Lástima 'EnumSet' fue una adición posterior. – trashgod

8

From the API documentation of this constructor:

Parámetros:

  • ...
  • style - la constante de la fuente del estilo. El argumento de estilo es una máscara de bits entera que puede ser PLAIN, o una unión bit a bit de BOLD y/o ITALIC (por ejemplo, ITALIC o BOLD|ITALIC). Si el argumento de estilo no se ajusta a una de las máscaras de bits enteras esperadas, entonces el estilo se establece en PLAIN.
  • ...

tanto, el uso

new Font("Verdana", Font.BOLD | Font.ITALIC, 12); 

aquí.

+2

+1 GMTA; Veo "|" es preferido sobre "+". – trashgod

+1

@trashgod: Realmente no hay diferencia entre '+', '|' y '^' en el caso de bits disjuntos como aquí. (ITALIC = 2 = 2¹, BOLD = 1 = 2⁰.) –

+0

Pero no es un buen hábito para entrar, ya que se encontrará fácilmente en situaciones en las que sí hace una diferencia, como se señala en mi comentario anterior. –

Cuestiones relacionadas