# JavaFX Controls in Default Window

**URL:** <https://discourse.processing.org/t/javafx-controls-in-default-window/46404>\
**Category:** Development\
**Created:** [May 17, 2025, 2:09pm UTC](https://discourse.processing.org/t/javafx-controls-in-default-window/46404 "2025-05-17T14:09:49Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![svan](https://avatars.discourse-cdn.com/v4/letter/s/82dd89/32.png) [@svan](https://discourse.processing.org/u/svan)\
**Post date:** [May 20, 2025, 1:33pm UTC](https://discourse.processing.org/t/javafx-controls-in-default-window/46404/7 "2025-05-20T13:33:06Z")

</div>

Adding a Pane to the root StackPane will allow setting of static control position with setLayoutX()/setLayoutY(). Therefore, it will not be necessary to change the root pane in the runtime as proposed above. Presumably any of the other layout panes could be added to the pre-existing root pane, although this has yet to be tested.

```auto
// Adding a Pane to root StackPane will allow user to
// set control position with setLayoutX()/setLayoutY()

import javafx.scene.canvas.Canvas;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.Pane;

Canvas canvas;
StackPane root;
Pane pane;

void setup(){
  size(350,200,FX2D);
  surface.setTitle("JavaFX control in Default Wnd");
  canvas = (Canvas)surface.getNative();
  println("canvas =",canvas);
  root = (StackPane)canvas.getParent();
  println("root =",root);
  pane = new Pane();
  root.getChildren().add(pane);
  Button btn = new Button("Push Me");
  btn.setLayoutX(60);
  btn.setLayoutY(30);
  pane.getChildren().add(btn);
  println("pane =",pane);
}

```

**Output:**

 ![pane](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/8/9/89735ea41c5bb408b75bcbe50333dabd62c4cbbb.png)

---

_[View the full topic](https://discourse.processing.org/t/javafx-controls-in-default-window/46404)._
