Ich habe eine ziehbare Button-Klasse, die eine Schaltfläche auf meinem Bildschirm anzeigt, die mit der Maus verschoben werden kann. Allerdings befindet sich jede ziehbare Schaltfläche in einem separaten stage-> scene-> pane-> node, um sie einzeln anzuzeigen. Wie mehrere Stufen nicht geöffnet werden können, während mehrere Szenen/Knoten angezeigt werden
Gibt es eine Möglichkeit, meinem Bildschirm mehrere ziehbare Schaltflächen hinzuzufügen, ohne dass Millionen von Phasen geöffnet sind?
Ich dachte, vielleicht mit einer transparenten Bühne die Größe des Bildschirms? Aber ich sehe nicht, wie das funktionieren würde, wenn ich nur eine Szene auf einmal zeigen kann.
//Draggable button class
import javafx.scene.control.Button;
import javafx.stage.Stage;
public class DraggableButton extends Button{
private double xOffset = 0;
private double yOffset = 0;
public DraggableButton(Stage stage){
this.setOnMousePressed(event -> {
xOffset = event.getSceneX();
yOffset = event.getSceneY();
});
this.setOnMouseDragged(event -> {
stage.setX(event.getScreenX() - xOffset);
stage.setY(event.getScreenY() - yOffset);
});
}
}
//Draggable button object
import javafx.geometry.Bounds;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class ButtonDragV2 {
private ButtonCollection btnCollection = ButtonCollection.getInstance();
private Stage stage;
private DraggableButton btn;
private VBox root;
private Scene scene;
private ButtonStacker bs;
public ButtonDragV2(){
stage = new Stage();
btn = new DraggableButton(stage);
root = new VBox();
scene = new Scene(root);
bs = new ButtonStacker();
stage.initStyle(StageStyle.UNDECORATED);
root.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
btn.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
btn.setPrefSize(100,100);
VBox.setVgrow(btn, Priority.ALWAYS);
root.getChildren().add(btn);
...
stage.show();
btnCollection.addButton(this);
{
{