DervaFX Wiki

Core Concepts

Wrappers, Not a New UI Engine

DervaFX wraps normal JavaFX nodes. Each DervaFX element owns a JavaFX node internally and exposes a chainable API for common UI setup.

DervaElement<T>

This is the base type for most of the library. Shared helpers include:

  • position(double x, double y)
  • size(double width, double height)
  • minSize(double width, double height)
  • maxSize(double width, double height)
  • padding(Insets insets)
  • padding(double value)
  • spacing(double value)
  • align(Pos pos)
  • fillWidth()
  • fillHeight()
  • text(String value)
  • visible(boolean value)
  • enabled(boolean value)
  • cssClass(String className)
  • style(String inlineStyle)
  • anchorFill()

Root vs Content Node

Each element has a wrapper root node returned by getNode() and an internal content node used by the implementation. That matters for layout and drag behavior. For example, DervaWindow moves its wrapper root rather than the internal VBox.

Factory Entry Point

DervaRoot root = DervaFX.root();

DervaFX.setTheme(DervaTheme.derma());

DervaWindow window = DervaFX.window("Base Window")
    .position(24, 24)
    .size(360, 220);

window.add(
    DervaFX.grid()
        .hgap(8)
        .vgap(8)
        .add(DervaFX.label("Project"), 0, 0)
        .add(DervaFX.textField().prompt("Project name"), 1, 0)
        .add(DervaFX.checkBox("Remember layout"), 0, 1, 2, 1)
        .add(DervaFX.button("Click me"), 1, 2)
);

root.add(window);