2012-08-11 16 views
5

JavaFX Scene Builder ile bir fxml içine bir ChoiceBox yerleştirdim.Hangi ChoiceBox-Event'i seçmelisiniz?

FXML, kendisine atanmış bir denetleyiciye sahiptir.

Soruma soru: Değişen değerler hakkında bilgi edinmek istiyorum, hangi olayı kaydetmem gerekiyor?

onInputMethodTextChanged="#languageSelectionModified" 

bu (bir öğeyi seçerken yani liste değil açılış) Aşağıdaki kodu

public void languageSelectionModified(Event event) { 
    ChoiceBox<String> box = (ChoiceBox<String>) event.getSource(); 
    System.out.println(box.getValue()); 
} 

ve ilk tıklama için bu sadece eserleri ile çalışmıyor:

onMouseClicked="#languageSelectionModified" 

Mouse-Events, dokunma veya klavyenin giriş yöntemi olduğu durumlar nedeniyle asla iyi bir seçim olmamasına rağmen, System.out'a ulaşılabileceğini kanıtlıyor.

choicebox.getSelectionModel().selectedItemProperty().addListener(choiceboxSelectionChangeListener); 

You:

Ben absolutly böyle şeyler belgelendirilmemesine edilir hiçbir fikri (varsayılan Java API değiller)

cevap

4

sizin @FXML bir dinleyici controller içerisinde choicebox enjekte ekle var Ayrıca, seçilen ürünün bağlanabilen:

Burada
label.textProperty().bind(choicebox.getSelectionModel().selectedItemProperty()); 

FXML de tanımlanan bir ComboBox için bir kontrol olarak, bir dinleyici çengel bir example olup. Bir ChoiceBox için mantık hemen hemen aynıdır.

+0

Cevabınız için teşekkürler! Bu iyi çalışıyor. Yani 'normal' FXML-olayları ile bunu yapmanın bir yolu yoktur? FXML dosyaları için mevcut (ve tanımlanabilir) olayları nerede bulabileceğimi söyleyebildiysen, cevabımı sorumu yanıtlarken işaretledim. – Gundon

+0

Hayır, bunun için JavaFX 2.0 - 2.2 kullanarak FXML'de olayları arayamazsınız. – jewelsea

+0

Seçme modeli olayı, choicebox'ın değeri kodla ayarlandığında bile tetiklenir (benim durumumda, bir çocuk choiceboxes formunu dolduran bir seçeneğim vardır) ve keşke "kullanıcı tarafından yönlendirilen değişiklikleri" ayırt etmenin temiz bir yolu olsaydı kodlanmış olanlar. – Mikeb