2015-03-27 16 views
5

Ben hakkında birkaç soru CSS Seçiciler (: Her TableView için .table-view gibi) ile bir JavaFX uygulaması stil var.JavaFX: CSS Seçicilerin Şekillendirme uygulama

Uygulamamın genel stil özelliklerini tanımlamak istediğim bir ana CSS dosyası oluşturdum. Örneğin: her ekranda her TableView aynı rengi alır. Ben sadece Main.css bir .fxml dosyası ile ilişkili her.

Şimdi her HBox'u bir 'kenar çubuğunda' aynı şekilde tasarlamak isterim. (Oracle'ın belgelerinde önerildiği gibi) böyle denedim:

.sidebar > .hbox { 
    /* Just some styling */ 
} 

Bu benim için sürpriz çalışmıyor, ancak aşağıdaki kod parçaları çalışıyoruz:

.sidebar > HBox { 
    /* Just some styling */ 
} 

.sidebar HBox { 
    /* Just some styling */ 
} 

Belki birşeyler vardır .sidebar özel bir stil olduğu gerçeği ile yapmak, ancak bu konuda emin değilim.

Yani benim sorular şunlardır:

1. Neden ilk çalışma değil mi? 2. Bunu yapmanın yolu ne olmalıydı? 2. Bu şekilde yapılması gerekenler ne olmalıdır? (.hbox veya HBox ve > ya hiçbir şey ile?)

cevap

8

Eğer HBOX sınıf tanımlanmış stil sınıfını sahip CSS belgelerinde görebileceğiniz gibi. Eğer > işareti kullanılabilir araç çubuğunun sadece doğrudan çocukları arama istiyorsanız nedenle sadece .hbox http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#hbox

kullanamaz. Bir CSS seçicideki > işaretini kullanmanız, performans sorunları için bazı faydalar sağlayacaktır, çünkü bunu yaparak, Araç Çubuğu Denetimi altındaki tüm alt hiyerarşinin taranması gerekmez. Eşleşen düğümler sadece çocukların ilk hiyerarşisinde aranacaktır.

Yani aşağıdakileri yapabilirsiniz bir kenar çubuğu doğrudan çocuklardır tüm düğmeleri seçmek istiyorsanız:

. sidebar > .button 

Ama gerçekten onlar sarılı olsa bile bir kenar çubuğu (tüm düğme stil vermek istersek bölmeleri, vs.) aşağıdaki seçiciyi kullanmak gerekir:

Geri sizin HBOX soruya
.sidebar .button 

: HBOX hiçbir tanımlanmış stil sınıfını (.hbox) bir için kullanılabilecek bir türü olan olsa bile tip seçici. Düğüm getTypeSelector yöntemi CSS Tipi Seçici benzer olduğu String döndüren

: CSS doc açıklandığı gibi tüm düğümler bir türü var. Varsayılan olarak, bu yöntem, sınıfın basit adını döndürür. Bir iç sınıfın veya bir anonim sınıfın basit adının bir tip seçici olarak kullanılamayabileceğini unutmayın. Böyle bir durumda, bu yöntem anlamlı bir değer döndürmek için geçersiz kılınmalıdır.

Bu nedenle, HBOX seçici çalışıyor.

+1

Tam olarak aradığım cevap buydu! Bu bilgiyi ilk defa gördüğümde (özellikle doğrudan çocuklarla ve '>' kullanarak). Çalışmıyorken bazı kitaplarda '.hbox 'kullanan insanları gördüğüm garipti. Bu cevap için çok teşekkür ederim! – bashoogzaad