簡體   English   中英

如何將偵聽器附加到JavaFX微調器?

[英]How do you attach a listener to a JavaFX spinner?

我遇到了JavaFX微調器似乎(無論如何對我來說)是一個奇怪的問題,並且無法將任何類型的偵聽器附加到它。

我習慣了Swing編程,可以在其中將ChangeListener附加到JSpinner並以這種方式接收事件,但是JavaFX似乎沒有這樣的東西。

有問題的代碼...

    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() + "!!"); 
        }
    });

箭頭按鈕將增加或減少字段中的值,但對模型中的值沒有影響。 僅選擇該字段的內容並按Enter鍵才能真正更新模型中的數據並打印出該值。 (我知道,按Enter鍵是在文檔中。)

我還意識到,我已經使用getEditor將EventHandler放置在Spinner的TextField上,但是我還沒有看到另一種方式來做到這一點。

有沒有一種方法可以將收聽者吸引到微調按鈕上?
(哎呀,有沒有辦法獲得那些按鈕來附加一個聽眾?)

我是否從微調器/編輯器接收到錯誤的類型事件? 我可以在spinnerValueFactory上放置某種偵聽器嗎?
我在這里有什么明顯的解決方案嗎?

如有必要,我將其替換為JSpinner,但對我而言,該API具有微調組件和如此笨拙的使用方式似乎讓我感到瘋狂。

提前致謝。

以下似乎對我來說很好:

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

或者你可以做

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

與上面的監聽器相同。

您應該注意此錯誤此錯誤已在1.8.0u60中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM