2011-08-02 15 views
12

Bir JLabel yazı tipini değiştirmeye çalışıyorum, bu yüzden hem BOLD hem de ITALIC, ancak bunun için tanımlanmış bir statik alan yok gibi görünüyor. Kalın, italik bir yazı tipine sahip olabilmemiz için iki stili nasıl birleştirebiliriz?Java'da 2 yazı tipi stilini birleştirebilir miyiz?

Bu kod statik alanını BOLD kullanarak sadece cesur ile yapacak ama kalın ve italik ikisi için tanımlanmış herhangi bir alan vardır:

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

cevap

22

Evet, style parametresi bir bit maskesi olarak görülür:

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

+1 "Bit maskesi" terimi beni devre dışı bırakıyor ...: D – mre

+4

Bitwise "veya" | ("+") –

+0

@ Hovercraft: Agreed'e ek olarak tercih edilir. @ Paŭlo'nun yorumları olarak, '+', '|' ve '^', bu bağlamda eşdeğerdir. '+' biraz daha okunabilir olabilir, ancak Pascal konuşması olabilir. Çok kötü "EnumSet" daha sonra eklenmiştir. – trashgod

8

From the API documentation of this constructor:

Parametreler:

  • ...
  • style
  • - Font için sürekli tarz. Stil argümanı, PLAIN ya da BOLD ve/veya ITALIC (örneğin, ITALIC veya BOLD|ITALIC) bitlik bir birleşimi olabilen bir tamsayı bit maskesidir. Stil argümanı beklenen tamsayı bit maskelerinden birine uymuyorsa, stil PLAIN olarak ayarlanır.
  • ...

Böylece burada

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

kullanın.

+2

+1 GMTA; "|" Görüyorum "+" üzerinden tercih edilir. – trashgod

+1

@trashgod: Buradaki gibi bit olmayan bitlerin durumunda '' '' '' '' '' '' arasında gerçekten bir fark yoktur. (ITALIC = 2 = 2¹, BOLD = 1 = 2⁰.) –

+0

Ancak, yukarıdaki yorumumda belirtildiği gibi bir fark yarattığı durumlara kolayca girebildiğiniz için içine girmek iyi bir alışkanlık değil. –