2014-06-17 29 views
19

JavaFX 8 uygulamasının GUI'sini test ederken, bazı etiketlerin kenar yumuşatılmış metin göstermediğini fark ettim. Biraz uğraştıktan ve mücadele ettikten sonra, çok sinir bozucu bir şey öğrendim. Kenar yumuşatma, yalnızca yazı tipi boyutunun 80 pikselden büyük olduğu etiketlere uygulanır.JavaFX yazı tiplerinde kenar yumuşatma nasıl zorlanır?

enter image description here

Örnek kod: bütün yazı boyutlarda AA zorlamak için bir yol https://gist.github.com/anonymous/be60bb89181376ff12aa

var mı Burada AA JavaFX ve Swing uygulamaları karşılaştırarak bir örnek uygulanan nedir? Bu size de mi geliyor? JavaFX Jira'da benzer bir hata araştırdım, ancak şu ana kadar hiç kimse şikayet etmiyor. Belki bunun için bir tane açmalıyım? yardımcı olabilecek

Bazı bilgiler: Varsayılan olarak

java version "1.8.0" 
Java(TM) SE Runtime Environment (build 1.8.0-b132) 
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode) 
Windows 8.1 64 bits [Version 6.3.9600] 
+0

Bunun için bir Jira hatası (https://javafx-jira.kenai.com/browse/RT-37705) açtım. –

cevap

27

, JavaFX 8 bazı durumlarda fontlar yumuşatmak görünmüyor LCD keskinliği yumuşatma ayarını ayarlamak için modena.css kullanır. Yazı tipi boyutu 80'den büyük olduğunda, AA tekniği gri skala AA'ya geçer (performans sorunları için). Bu nedenle, her boyutta düzgün kenarlar elde etmek için bunun yerine gri ölçekli AA kullanılmalıdır.

Bu CSS ile yapılabilir:

.text{ 
    -fx-font-smoothing-type: gray; 
} 

Veya sistem argümanlar aracılığıyla:

-Dprism.lcdtext=false 

Veya ayar sistemi özelliklerine:

System.setProperty("prism.lcdtext", "false"); 

Teşekkür Jira tarihinde cevap verdi millet!

+2

Varsayılan metin düzeltme türünün "gri" olduğunu düşünüyorum (bkz. Https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html), ancak Modena CSS bunu ayarlayın "lcd" e –

+3

UI bir FXML şablonundan yüklendiyse, 'System.setProperty (" prism.lcdtext "," false ");' _before_ yükleme denirse, aksi takdirde efekt oluşturmayacağına dikkat edin. –