Last active
October 4, 2024 20:43
-
-
Save Da9el00/9a676045ecf95da4caa1c3b2bab5e57c to your computer and use it in GitHub Desktop.
grid
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.fxml.FXMLLoader; | |
import javafx.scene.Scene; | |
import javafx.stage.Stage; | |
import java.io.IOException; | |
public class Application extends javafx.application.Application { | |
@Override | |
public void start(Stage stage) throws IOException { | |
FXMLLoader fxmlLoader = new FXMLLoader(Application.class.getResource("hello-view.fxml")); | |
Scene scene = new Scene(fxmlLoader.load()); | |
stage.setTitle("Hello!"); | |
stage.setScene(scene); | |
stage.show(); | |
} | |
public static void main(String[] args) { | |
launch(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.shape.Rectangle; | |
public class Component { | |
private Rectangle rectangle; | |
private int startPositionX; | |
private int startPositionY; | |
public Component(int size, int startPositionX, int startPositionY) { | |
this.startPositionX = startPositionX; | |
this.startPositionY = startPositionY; | |
rectangle = new Rectangle(startPositionX, startPositionY, size, size); | |
} | |
public Rectangle getRectangle() { | |
return rectangle; | |
} | |
public int getStartPositionX() { | |
return startPositionX; | |
} | |
public int getStartPositionY() { | |
return startPositionY; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.example.gridbaseddraggable.grid.*; | |
import javafx.fxml.FXML; | |
import javafx.fxml.Initializable; | |
import javafx.scene.layout.AnchorPane; | |
import java.net.URL; | |
import java.util.ResourceBundle; | |
public class Controller implements Initializable { | |
private int gridSize = 50; | |
@FXML | |
private AnchorPane pane; | |
private GridHandler backgroundGridHandler; | |
private DraggableMakerGrid draggableMakerGrid; | |
private DraggableMaker draggableMaker = new DraggableMaker(); | |
private DraggableMakerGrid2 gridMaker2; | |
@Override | |
public void initialize(URL url, ResourceBundle resourceBundle) { | |
draggableMakerGrid = new DraggableMakerGrid(pane.getPrefWidth(), pane.getPrefHeight(), gridSize, pane); | |
gridMaker2 = new DraggableMakerGrid2(pane.getPrefWidth(), pane.getPrefHeight(), gridSize, pane); | |
backgroundGridHandler = new GridHandler(pane.getPrefWidth(), pane.getPrefHeight(), gridSize, pane); | |
backgroundGridHandler.updateGrid(); | |
Component component = new Component(gridSize, 100, 100); | |
pane.getChildren().add(component.getRectangle()); | |
//draggableMakerGrid.makeDraggable(component); | |
draggableMaker.makeDraggable(component.getRectangle()); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.Node; | |
public class DraggableMaker { | |
private double mouseAnchorX; | |
private double mouseAnchorY; | |
public void makeDraggable(Node node){ | |
node.setOnMousePressed(mouseEvent -> { | |
mouseAnchorX = mouseEvent.getX(); | |
mouseAnchorY = mouseEvent.getY(); | |
}); | |
node.setOnMouseDragged(mouseEvent -> { | |
node.setLayoutX(mouseEvent.getSceneX() - mouseAnchorX); | |
node.setLayoutY(mouseEvent.getSceneY() - mouseAnchorY); | |
}); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.Node; | |
import javafx.scene.layout.AnchorPane; | |
public class DraggableMakerGrid extends GridBase{ | |
private double mouseAnchorX; | |
private double mouseAnchorY; | |
public DraggableMakerGrid(double planeWidth, double planeHeight, int gridSize, AnchorPane anchorPane) { | |
super(planeWidth, planeHeight, gridSize, anchorPane); | |
} | |
public void makeDraggable(Node node){ | |
node.setOnMouseReleased(mouseEvent -> { | |
mouseAnchorX = mouseEvent.getSceneX(); | |
mouseAnchorY = mouseEvent.getSceneY(); | |
int x = (int) ((mouseAnchorX/getGridSize()) % getTilesAcross()) * getGridSize(); | |
int y = (int) ((mouseAnchorY/getGridSize()) % getTilesDown()) * getGridSize(); | |
node.setLayoutX(x); | |
node.setLayoutY(y); | |
}); | |
} | |
public void makeDraggable(Component component){ | |
Node node = component.getRectangle(); | |
node.setOnMouseDragged(mouseEvent -> { | |
mouseAnchorX = mouseEvent.getSceneX(); | |
mouseAnchorY = mouseEvent.getSceneY(); | |
int x = (int) ((mouseAnchorX/getGridSize()) % getTilesAcross()) * getGridSize(); | |
int y = (int) ((mouseAnchorY/getGridSize()) % getTilesDown()) * getGridSize(); | |
node.setLayoutX(x - component.getStartPositionX()); | |
node.setLayoutY(y - component.getStartPositionY()); | |
}); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.layout.AnchorPane; | |
public abstract class GridBase { | |
private double planeWidth; | |
private double planeHeight; | |
private int tilesAcross; | |
private int tileAmount; | |
private int gridSize; | |
private int tilesDown; | |
private AnchorPane anchorPane; | |
public GridBase(double planeWidth, double planeHeight, int gridSize, AnchorPane anchorPane) { | |
this.planeWidth = planeWidth; | |
this.planeHeight = planeHeight; | |
this.gridSize = gridSize; | |
this.anchorPane = anchorPane; | |
tilesAcross = (int) (planeWidth / gridSize); | |
tileAmount = (int) ((planeWidth /gridSize) * (planeHeight /gridSize)); | |
tilesDown = tileAmount/tilesAcross; | |
} | |
public double getPlaneWidth() { | |
return planeWidth; | |
} | |
public double getPlaneHeight() { | |
return planeHeight; | |
} | |
public int getTilesAcross() { | |
return tilesAcross; | |
} | |
public int getTileAmount() { | |
return tileAmount; | |
} | |
public int getGridSize() { | |
return gridSize; | |
} | |
public int getTilesDown() { | |
return tilesDown; | |
} | |
public AnchorPane getAnchorPane() { | |
return anchorPane; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.scene.layout.AnchorPane; | |
import javafx.scene.paint.Color; | |
import javafx.scene.shape.Rectangle; | |
public class GridHandler extends GridBase { | |
Color backgroundColor1 = Color.WHITE; | |
Color backgroundColor2 = Color.color(0.82,0.82,0.82); | |
public GridHandler(double planeWidth, double planeHeight, int gridSize, AnchorPane anchorPane) { | |
super(planeWidth, planeHeight, gridSize, anchorPane); | |
} | |
public void updateGrid() { | |
for(int i = 0; i < getTileAmount(); i++){ | |
int x = (i % getTilesAcross()); | |
int y = (i / getTilesAcross()); | |
Rectangle rectangle = new Rectangle(x * getGridSize(),y * getGridSize(),getGridSize(),getGridSize()); | |
if((x + y) % 2 == 0){ | |
rectangle.setFill(backgroundColor1); | |
} else { | |
rectangle.setFill(backgroundColor2); | |
} | |
getAnchorPane().getChildren().add(rectangle); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<?import javafx.scene.layout.AnchorPane?> | |
<AnchorPane fx:id="pane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/15.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.gridbaseddraggable.Controller" /> |
The DraggableMakerGrid2 is missing
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm interested in the fxml file, could you possibly post it here?