JavaFX: Put a draggable, resizable polygon on an image
· Christian Ullenboom
import java.util.concurrent.atomic.AtomicInteger;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.scene.Cursor;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;
class DrawingPane extends Pane
{
public DrawingPane( Image image, Polygon poly )
{
poly.setFill( Color.web( "ANTIQUEWHITE", 0.8 ) );
poly.setStroke( Color.web( "ANTIQUEWHITE" ) );
poly.setStrokeWidth( 2 );
getChildren().addAll( new ImageView( image ), poly );
for ( int i = 0; i < poly.getPoints().size(); i += 2 ) {
Circle circle = new Circle( poly.getPoints().get( i ), poly.getPoints().get( i + 1 ), 5 );
circle.setFill( Color.web( "PERU", 0.8 ) );
circle.setStroke( Color.PERU );
circle.setStrokeWidth( 2 );
AtomicInteger polyCoordinateIndex = new AtomicInteger( i );
circle.centerXProperty().addListener( new ChangeListener() {
@Override
public void changed( ObservableValue
Kategorien: JavaFX