package kioskfx; import javafx.application.*; import javafx.beans.value.*; import javafx.event.*; import javafx.scene.*; import javafx.scene.control.*; import javafx.scene.paint.*; import javafx.stage.*; import javafx.animation.*; import javafx.util.*; import java.util.*; import javafx.scene.image.*; import javafx.scene.shape.*; import javafx.beans.property.*; import javafx.beans.value.*; import javafx.scene.image.*; import javafx.scene.input.*; import javafx.geometry.*; import javafx.scene.transform.*; import javafx.scene.effect.*; import javafx.scene.text.*; public class KiBackground { private SimpleDoubleProperty height; private SimpleDoubleProperty width; //private SimpleDoubleProperty x; //private SimpleDoubleProperty y; private ImageView imageView; private Group root; //private double wave; public KiBackground() { //wave = 32.0; width = new SimpleDoubleProperty(300); height = new SimpleDoubleProperty(200); //x = new SimpleDoubleProperty(0); //y = new SimpleDoubleProperty(100); imageView = new ImageView(); imageView.setPreserveRatio(true); //imageView.translateXProperty().bind(height); root = new Group(); root.getChildren().add(imageView); Rectangle clip = new Rectangle(); clip.widthProperty().bind(width);//.subtract(wave)); clip.heightProperty().bind(height);//.subtract(wave)); root.setClip(clip); addWatchers(); /*root.setOnMousePressed(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { System.out.println( event); } });*/ /*imageView.setOnMouseMoved(new EventHandler<MouseEvent>() { public void handle(MouseEvent event) { //throw new UnsupportedOperationException("Not supported yet."); System.out.println(event.getSceneX()); //double x=event.getX(); //double y=event.getY(); //System.out.println( x+" : "+y); imageView.setTranslateX(-wave * event.getX() / width.get()); imageView.setTranslateY(-wave * event.getY() / height.get()); } });*/ } private void addWatchers() { width.addListener(new ChangeListener<Number>() { public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { adjust(); } }); height.addListener(new ChangeListener<Number>() { public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { adjust(); } }); } private void adjust() { if (width.get() / imageView.getBoundsInLocal().getWidth() > height.get() / imageView.getBoundsInLocal().getHeight()) { imageView.setFitHeight(0); imageView.setFitWidth(width.get()); } else { imageView.setFitWidth(0); imageView.setFitHeight(height.get()); } } public KiBackground width(DoubleProperty nn) { width.bind(nn);//.add(wave)); return this; } public KiBackground height(DoubleProperty nn) { height.bind(nn);//.add(wave)); return this; } public KiBackground image(Image it) { imageView.setImage(it); return this; } public Node node() { return root; } }