Start-up:
After clicking mouse at a few locations:
Creating a Simple Layer System
LayerTest.java
import javafx.application.Application;
import javafx.scene.Group;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.control.ChoiceBox;
import javafx.collections.FXCollections;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
public class LayerTest extends Application {
private Group root;
private BorderPane borderPane;
private Canvas layer1;
private Canvas layer2;
private GraphicsContext gc1;
private GraphicsContext gc2;
private ChoiceBox cb;
private void createLayers(){
// Layers 1&2 are the same size
layer1 = new Canvas(300,250);
layer2 = new Canvas(300,250);
// Obtain Graphics Contexts
gc1 = layer1.getGraphicsContext2D();
gc1.setFill(Color.GREEN);
gc1.fillOval(50,50,20,20);
gc2 = layer2.getGraphicsContext2D();
gc2.setFill(Color.BLUE);
gc2.fillOval(100,100,20,20);
}
private void handleLayers(){
// Handler for Layer 1
layer1.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
gc1.fillOval(e.getX(),e.getY(),20,20);
}
});
// Handler for Layer 2
layer2.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
gc2.fillOval(e.getX(),e.getY(),20,20);
}
});
}
private void createChoiceBox(){
cb = new ChoiceBox();
cb.setItems(FXCollections.observableArrayList("Layer 1 is GREEN", "Layer 2 is BLUE"));
cb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue o, Object o1, Object o2){
if(o2.toString().equals("Layer 1 is GREEN")){
layer1.toFront();
}else if(o2.toString().equals("Layer 2 is BLUE")){
layer2.toFront();
}
}
});
cb.setValue("Layer 1 is GREEN");
}
private void addLayers(){
// Add Layers
borderPane.setTop(cb);
Pane pane = new Pane();
pane.getChildren().add(layer1);
pane.getChildren().add(layer2);
layer1.toFront();
borderPane.setCenter(pane);
root.getChildren().add(borderPane);
}
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Build GUI
borderPane = new BorderPane();
primaryStage.setTitle("Layer Test");
root = new Group();
createLayers();
handleLayers();
createChoiceBox();
addLayers();
// Show Scene
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
Maintained by John Loomis, updated Sat Jan 20 19:50:51 2018