2011-08-02 15 views
12

Próbuję zmienić czcionkę JLabel, więc jest zarówno BOLD i ITALIC, ale wydaje się, że nie ma zdefiniowanego pola statycznego, aby to zrobić. Jak połączyć dwa style, abyśmy mogli mieć odważną, pochyloną czcionkę?Czy możemy łączyć ze sobą 2 style czcionek w Javie?

Ten kod będzie zrobić to z tylko pogrubione za pomocą pola statycznego BOLD, ale nie ma pola zdefiniowane dla obu pogrubienie i kursywa:

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

Odpowiedz

22

Tak, parametr style jest postrzegana jako maskę bitową:

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

+1 Termin "bitmask" włącza mnie ...: D – mre

+4

Bitowy "lub" | jest preferowany w stosunku do dodawania ("+") –

+0

@ Poduszkowiec: uzgodniono. Jak komentuje @ Paŭlo, '+', '|' i '^' są równoważne w tym kontekście. '+' może być nieco bardziej czytelne, ale może to być mowa Pascala. Szkoda, że ​​'EnumSet' był późniejszym dodatkiem. – trashgod

8

From the API documentation of this constructor:

Parametry:

  • ...
  • style - styl stała dla czcionki. Argument stylu jest całkowitą maską bitową, która może być PLAIN lub bitowym połączeniem BOLD i/lub ITALIC (na przykład ITALIC lub BOLD|ITALIC). Jeśli argument style nie jest zgodny z oczekiwaną liczbą całkowitą masek bitowych, wówczas styl jest ustawiony na PLAIN.
  • ...

Zatem używać

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

tutaj.

+2

+1 GMTA; Widzę "|" jest preferowane w stosunku do "+". – trashgod

+1

@trashgod: Tak naprawdę nie ma różnicy między '+", '|' i '^' w przypadku rozłącznych bitów, jak tutaj. (ITALIC = 2 = 2¹, BOLD = 1 = 2⁰.) –

+0

Ale nie jest to dobry nawyk, ponieważ łatwo wpadniesz w sytuacje, w których robi to różnicę, jak zauważono w powyższym komentarzu. –

Powiązane problemy