package com.soundlooper.gui.customComponent.hspinner; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.SkinBase; import javafx.scene.layout.BorderPane; import javafx.scene.text.Text; import javafx.util.converter.NumberStringConverter; public class HSpinnerSkin extends SkinBase<HSpinner> { private BorderPane borderPane = new BorderPane(); private Button leftButton; private Button rightButton; private Label label; private Text text; protected HSpinnerSkin(HSpinner control) { super(control); leftButton = new Button("<"); leftButton.prefWidth(100); rightButton = new Button(">"); rightButton.prefWidth(100); label = new Label(); label.textProperty().bindBidirectional(control.valueProperty(), new NumberStringConverter()); leftButton.prefWidth(100); text = new Text(); // TODO css text.prefWidth(100); text.textProperty().bindBidirectional(label.textProperty()); borderPane.prefWidth(300); borderPane.minWidth(300); borderPane.maxWidth(300); borderPane.prefHeight(300); borderPane.minHeight(300); borderPane.maxHeight(300); borderPane.setStyle("-fx-background-color:blue;"); control.editionProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (newValue) { borderPane.setCenter(text); } else { borderPane.setCenter(label); } } }); getChildren().add(borderPane); } @Override protected void layoutChildren(double contentX, double contentY, double contentWidth, double contentHeight) { } }