2017-01-14 16 views
0

スライダを移動するときにスライダの値を表示しようとしています。JavaFXスライダのイベントが発生しないのはなぜですか?

これは私がこれまで試したが、動作しないものです:

public class ControlsController extends BaseController{ 
    @FXML 
    private Slider slAcceleration; 

    @FXML 
    public void slAccelerationEventHandler(DragEvent event){ 
     System.out.println(slAcceleration.getValue()); 
    } 
} 

そして、私の.fxmlコード:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.Slider?> 
<?import javafx.scene.layout.Pane?> 

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="300.0" style="-fx-background-color: bdc3ff;" xmlns="http://javafx.com/javafx/8.0.102" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.ControlsController"> 
    <children> 
     <Label id="lbAcceleration" layoutX="14.0" layoutY="125.0" text="Versnelling simulatie x60" /> 
     <Slider id="slAcceleration" blockIncrement="1.0" layoutX="14.0" layoutY="151.0" max="600.0" min="1.0" onDragDone="#slAccelerationEventHandler" prefHeight="14.0" prefWidth="280.0" value="60.0" /> 
    </children> 
</Pane> 

は、私はより多くの情報を掲載する必要があるなら、私に教えてください。どんな助けも大いに訴えられるでしょう!

+0

ここでは何が機能していませんか? – azro

+0

@azroそれはコンソールにメッセージを表示しません。 –

+0

変更先:System.out.println( "here" + slAcceleration.getValue()); 瞬間の方法に入るかどうかを知るだけです – azro

答えて

0

dragDoneイベントは、「ドラッグアンドドロップ」システムの一部です。完全なドラッグ・アンド・ドロップ処理(アプリケーション内またはアプリケーション間でのデータの移動)中に呼び出され、以前にノードでstartDragAndDrop()を呼び出した場合にのみ発生します。

ここで必要なのは、スライダーのvalueProperty()を観察することです。そこには、イベントが、そのために発生していないので、コントローラのinitialize方法でリスナーを登録します。

public class ControlsController extends BaseController{ 
    @FXML 
    private Slider slAcceleration; 

    public void initialize() { 
     slAcceleration.valueProperty().addListener((obs, oldValue, newValue) -> { 
      System.out.println(newValue.doubleValue()); 
     }); 
    } 
} 

また、あなたのFXMLファイルにエラーがあります:あなたはid代わりのfx:idを使用しています。これを修正する必要があります。そうしないと、コントローラー内のフィールドが初期化されません(@FXML)。

+0

ジェームズありがとう!私はidとfx:idの違いを知っています。私はそれを見つけました。 –

関連する問題