今日は2つのスライダーを連動させてみました.
まずは,FXML.Simple.fxmlという名前で次のようなXMLを書きます.
<?xml version = "1.0"?>
<?import javafx.scene.Scene?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Slider?>
<Scene width = "640" height = "480" xmlns:fx="http://javafx.com//fxml">
<VBox>
<Slider fx:id = "sliderA" />
<Slider fx:id = "sliderB" value = "${sliderA.value}" />
</VBox>
</Scene>
Sceneの中に,VBoxでSliderを2つ組み込み,それぞれにfx:idでIDを振ります.
そして,valueは式の形でsliderBの方の値はsliderAの値を見るようにします.
Javaの方は至ってシンプル.このFXMLをロードして表示するだけ.
import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; public class Simple extends Application { public static void main(String [] args){ launch(args); } public void start(Stage primaryStage) throws Exception { Scene scene = FXMLLoader.load(getClass().getResource("Simple.fxml")); primaryStage.setScene(scene); primaryStage.show(); } }
これで,上側のスライダーを動かすと,下側のスライダーも動きます.
でも,下側のスライダーを動かしても上は何の反応も示しません.
双方向にするには,sliderAの方にはsliderBの値を見るようにFXMLに追加してやるだけです.
こんなに簡単にプロパティのバインドができるとは・・・$を使った部分が
どこまでできるのか,新しいオブジェクトの生成が出来るのか,とかはこれから
調べて行こうと思います.
0 件のコメント:
コメントを投稿