package javafxcompatibilitybuild68; import javafx.application.Application; import javafx.beans.InvalidationListener; import javafx.beans.Observable; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.EventHandler; import javafx.geometry.Rectangle2D; import javafx.geometry.VPos; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.shape.Line; import javafx.scene.text.Text; import javafx.scene.transform.Transform; import javafx.stage.Stage; public class imageview extends Application { public static void main(String[] args) { launch(args); } private IntegerProperty INDEX = new SimpleIntegerProperty(-1); private ImageView view; Text text; @Override public void start(Stage stage) throws Exception { Image image = new Image(imageview.class.getResourceAsStream("lion.jpg")); double sourceWidth = image.getWidth(); double sourceHeight = image.getHeight(); view = new ImageView(); view.setImage(image); view.setX(10.0); view.setY(15.0); Rectangle2D rectangle2d = new Rectangle2D(20.0, 20.0, sourceWidth - 40, sourceHeight - 50); view.setViewport(rectangle2d); view.setFocusTraversable(true); view.setOnKeyReleased(new EventHandler() { @Override public void handle(KeyEvent e) { if (e.getCode().equals(KeyCode.LEFT)) { update(); } } }); INDEX.addListener(new InvalidationListener() { public void invalidated(Observable ov) { text.setText("Case " + (INDEX.getValue() + 1)); } }); ObservableList nodes = FXCollections.observableArrayList(); text = new Text("Case " + (INDEX.getValue() + 1)); text.setY(199); text.setTextOrigin(VPos.BASELINE); nodes.addAll(view, text, vLine(25, Color.RED), vLine(50, Color.RED), vLine(75, Color.RED), vLine(100, Color.RED), vLine(125, Color.RED), vLine(150, Color.RED), vLine(175, Color.RED), hLine(25, Color.RED), hLine(50, Color.RED), hLine(75, Color.RED), hLine(100, Color.RED), hLine(125, Color.RED), hLine(150, Color.RED), hLine(175, Color.RED)); Scene scene = new Scene(new Group(), 300, 300); stage.setScene(scene); ((javafx.scene.Group) (stage.getScene().getRoot())).getChildren().clear(); ((javafx.scene.Group) (stage.getScene().getRoot())).getChildren().addAll(nodes); view.requestFocus(); stage.show(); update(); } public Line vLine(double x, Paint color) { Line line = new Line(x, 0.0, x, 600.0); line.setStroke(color); return line; } public Line hLine(double y, Paint color) { Line line2 = new Line(0.0, y, 600.0, y); line2.setStroke(color); return line2; } private void update() { INDEX.setValue(INDEX.getValue() + 1); if (INDEX.getValue() > 7) { INDEX.setValue(0); } if (INDEX.getValue() == 0) { view.setScaleX(1.5); } else { view.setScaleX(1.0); } if (INDEX.getValue() == 1) { view.setScaleY(1.5); } else { view.setScaleY(1.0); } if (INDEX.getValue() == 2) { view.setTranslateX(25.0); } else { view.setTranslateX(0.0); } if (INDEX.getValue() == 3) { view.setTranslateY(25.0); } else { view.setTranslateY(0.0); } view.getTransforms().clear(); if (INDEX.getValue() == 4) { view.getTransforms().clear(); view.getTransforms().add(Transform.rotate(33, 40, 12)); } if (INDEX.getValue() == 5) { view.getTransforms().clear(); view.getTransforms().add(Transform.scale(1.25F, 0.75F)); } if (INDEX.getValue() == 6) { view.getTransforms().clear(); view.getTransforms().add(Transform.shear(0.1F, 0.15F)); } if (INDEX.getValue() == 7) { view.getTransforms().clear(); view.getTransforms().add(Transform.translate(10, 20)); } } }