2015-04-28 19 views
6

JavaFX iplikçilerle ilgili garip bir problem gibi görünen (her neyse) gibi bir şeye rastladım ve ona herhangi bir dinleyici ekleyemiyorum.Bir JavaFX çeviriciye nasıl bir dinleyici eklersiniz?

Ben bu şekilde bir JSpinner bir ChangeListener takmak ve olayları alabileceğiniz, programlama Salıncak alışığım ama JavaFX böyle bir şey var gibi görünmüyor.

söz konusu kodu ...

IntegerSpinnerValueFactory spinnerValueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(0, Integer.MAX_VALUE); 

    hullPointsSpinner = new Spinner<Integer>(spinnerValueFactory); 
    hullPointsSpinner.setEditable(true); 

    ((TextField)hullPointsSpinner.getEditor()).setOnAction(new EventHandler<ActionEvent>() { 

     public void handle(ActionEvent event) 
     { 
     System.out.println("Howdy, folks! Value is " + hullPointsSpinner.getValue() + "!!"); 
     } 
    }); 

ok düğmelerini artırmak ve alandaki değeri azaltmak, ancak modelinde değeri üzerinde herhangi bir etkisi olmaz. Sadece alanın içeriğini seçmek ve enter tuşuna basmak, modeldeki verileri güncelleyecektir ve değeri basacaktır. (Sıkıştırma giriş işlemi belgelerindedir, biliyorum.)

Ayrıca bu EventHandler'ı getEditor ile Spinner TextField ürününe eklediğimin farkındayım, ancak bunu yapmak için başka bir yol görmedim.

spinner düğmelerinin için bir dinleyici kanca için bir yol var mı?
(Heck, bir dinleyici takmak için bu düğmelere ulaşmanın bir yolu var mı?)

Yanlış yazım olayını çevirici/düzenleyiciden mi alıyorum? SpinnerValueFactory'ye bir çeşit dinleyici yerleştirebilir miyim?
Burada baktığım belli bir çözüm var mı? Gerekirse

Ben bir JSpinner ile bu değiştiririz, ama sadece bu API spinner bileşeni ve kullanmak için böyle bir garip bir yol olurdu bana deli gibi görünüyor.

Şimdiden teşekkürler.

cevap

11

şu benim için iyi iş gibi görünüyor:

hullPointsSpinner.valueProperty().addListener((obs, oldValue, newValue) -> 
    System.out.println("New value: "+newValue)); 

Alternatif Yukarıdaki aynı dinleyici ile

spinnerValueFactory.valueProperty().addListener(...); 

yapabilirsiniz.

Sen 1.8.0u60 düzeltilmiştir this bug, belirtmeliyiz.

+0

Teşekkür ederim !!!!!! İki gündür bununla savaşıyorum! Hala JavaFX'te değil, ama oraya gidiyorum. – BozemanPhil

+0

YW. Sadece FYI, bu temelde bir değer (muhtemelen "Button" hariç her şey) saklayan tüm JavaFX kontrollerinin çalışmasıdır. 'CheckBox.selectedProperty(). AddListener (...)' 'textField.textProperty(). AddListener (...)' 'comboBox.valueProperty(). AddListener (...)' vb –

+0

teşekkürler cevap için çok fazla. – 7twenty7

İlgili konular