Skip to content
Refaltor77 edited this page Mar 29, 2026 · 3 revisions

Button

Interactive button element using Bedrock's factory system.

Important

Buttons require the button factory to be enabled on the parent panel:

$panel->enableFactoryButton($root); // REQUIRED before adding buttons

Creation

use refaltor\ui\elements\Button;

$button = Button::create("my_button", $root);

Properties

// Text displayed on the button
$button->setButtonText("Click Me");

// Visibility condition (matches against #form_button_text)
$button->setVisibleIfTitle("Click Me");

// Custom textures for each state
$button->setDefaultButtonTexture("textures/ui/btn_default");
$button->setHoverButtonTexture("textures/ui/btn_hover");
$button->setPressedButtonTexture("textures/ui/btn_pressed");
$button->setLockedButtonTexture("textures/ui/btn_locked");

Complete Example

$root = Root::create();

$panel = Panel::create("button_container")
    ->setSizePercentage(100, 100);

// Enable factory (required!)
$panel->enableFactoryButton($root);

// Create buttons
$playBtn = Button::create("play", $root)
    ->setButtonText("Play")
    ->setVisibleIfTitle("Play")
    ->setSize(200, 30)
    ->setAnchorFrom(Element::ANCHOR_CENTER)
    ->setAnchorTo(Element::ANCHOR_CENTER);

$panel->addChild($playBtn);
$root->addElement($panel);

Multiple Buttons in a Stack

$stack = StackPanel::create("btn_stack")
    ->setOrientation(OrientationHelper::VERTICAL)
    ->setSize(200, 120)
    ->setAnchorFrom(Element::ANCHOR_CENTER)
    ->setAnchorTo(Element::ANCHOR_CENTER);

$stack->enableFactoryButton($root);

$stack->addChild(
    Button::create("btn_play", $root)
        ->setButtonText("Play")->setVisibleIfTitle("Play")->setSize(200, 30)
);
$stack->addChild(
    Button::create("btn_settings", $root)
        ->setButtonText("Settings")->setVisibleIfTitle("Settings")->setSize(200, 30)
);
$stack->addChild(
    Button::create("btn_quit", $root)
        ->setButtonText("Quit")->setVisibleIfTitle("Quit")->setSize(200, 30)
);

$root->addElement($stack);

How It Works

The factory system generates:

  1. A template_button_easy_ui_builder extending common_buttons.light_text_button
  2. A template_button_easy_ui_builder_stack_panel with collection bindings
  3. Each button references these templates and uses $condition for visibility

See Also

  • Element — Base class
  • Panel — Required parent with enableFactoryButton()
  • Stack Panel — Common layout for button lists

Clone this wiki locally