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

Panel

Container element for grouping and layout. Most properties inherited by StackPanel.

Creation

use refaltor\ui\elements\Panel;

$panel = Panel::create("my_panel");

Properties

All Element properties are available, plus:

// Visibility & state
$panel->setVisible(true);
$panel->setEnabled(true);
$panel->setAlpha(0.9);
$panel->setPropagateAlpha(true);

// Clipping
$panel->setClipsChildren(true);
$panel->setAllowClipping(true);
$panel->setClipOffset([0, 0]);
$panel->setEnableScissorTest(true);

// Layout
$panel->setLayer(2);
$panel->setSelected(false);
$panel->setUseChildAnchors(true);

// Animation
$panel->setDisableAnimFastForward(false);
$panel->setAnimationResetName("reset_anim");

// Data
$panel->setPropertyBag(["#key" => "value"]);

Children

$panel->addChild($label);
$panel->addChilds([$image, $button, $grid]);

Complete Example

$mainPanel = Panel::create("main")
    ->setSizePercentage(100, 100);

// Background
$mainPanel->addChild(
    Image::create("bg", "textures/ui/dialog_background_opaque")
        ->setSizePercentage(100, 100)
        ->setNinesliceSize(4)
        ->setLayer(-1)
);

// Content
$mainPanel->addChild(
    Label::create("title", "My Panel")
        ->setFontSize(Label::FONT_LARGE)
        ->setShadow()
        ->setAnchorFrom(Element::ANCHOR_TOP_MIDDLE)
        ->setAnchorTo(Element::ANCHOR_TOP_MIDDLE)
        ->setOffset(0, 10)
);

$root->addElement($mainPanel);

With Bindings & Animations

$panel = Panel::create("animated_panel")
    ->setSize(200, 100)
    ->addAnim("@fade_in")
    ->addBinding(Binding::visibility("(#title_text = 'SHOW_ME')"));

See Also

Clone this wiki locally