An exclusive-choice list of radio options (the vertical counterpart to UISegmentedControl): a stacked column of rows, each a dot on the left and a label on the right, with exactly one selected. Clicking a row selects it and fires onSelect(index); picking another clears the previous one.

The group is a passive container — the interactive rows are its children — so it lays out and re-themes like the rest of the library. Rows are fixed-height (rowHeightBase, taller on mobile for touch); the group's height follows the option count.

Constructor

@:value({ selected : 0 })new(items:Array<String>, width:Float, selected:Int = 0, ?onSelect:Int ‑> Void)

Parameters:

items

the option labels

width

layout width

selected

the initially selected index

onSelect

fired with the new index when the user picks an option

Variables

@:value(12)fontSize:Int = 12

@:value(24)rowHeightBase:Float = 24

Base (unscaled) per-row height.

@:value(0)read onlyselectedIndex:Int = 0

The selected option index, or -1 when empty.

@:value(null)onSelect:Int ‑> Void = null

Fired when the selection changes (click or select(i, true)).

Methods

@:value({ fire : false })select(index:Int, fire:Bool = false):Void

Programmatically selects an option.

Parameters:

index

the option to select (ignored when out of range or unchanged)

fire

true also fires onSelect

setItems(items:Array<String>, ?keys:Array<String>):Void

Replaces the options (the selection clamps into range).

Parameters:

items

the option labels (also the localization fallbacks when keys is set)

keys

optional per-option translation keys resolved through UILocale

Inherited Variables

Defined by UIComponent

@:value(true)enabled:Bool = true

Disabled widgets ignore the pointer and typically render dimmed.

@:value(0)read onlyh:Float = 0

Layout height in UI units.

@:value(MouseCursor.BUTTON)hoverCursor:MouseCursor = MouseCursor.BUTTON

Native cursor while hovering (interactive widgets; null keeps the arrow).

@:value(false)read onlyhovered:Bool = false

true while the cursor is over this widget.

@:value(false)longPressable:Bool = false

Opts a subclass that overrides onRightPress (without setting onRightClick) into long-press-as-right-click on touch. Widgets with onRightClick set are included automatically.

@:value(null)onClick:() ‑> Void = null

Fired on a completed click (press + release on this widget). Requires an interactive widget.

@:value(null)onHover:() ‑> Void = null

Fired when the cursor first enters this widget (hover-driven descriptions/previews). Interactive widgets only.

@:value(null)onRightClick:() ‑> Void = null

Fired on a right mouse press over this widget (context menus). Only interactive widgets receive pointer events, so this never fires on passive widgets like UILabel/UIPanel — attach it to a UIButton (or another interactive widget) instead. On touch, a long-press fires the same path (see UIRoot.longPressMs).

@:value(false)read onlypressed:Bool = false

true while a press that started here is held.

@:value(null)tooltip:String = null

Optional tooltip text (already-localized or a fixed string).

@:value(null)tooltipShortcut:String = null

Optional right-aligned shortcut hint rendered in the tooltip.

@:value(0)read onlyw:Float = 0

Layout width in UI units (independent of DisplayObject's content-derived width).

Inherited Methods

Defined by UIComponent

dispose():Void

Tears the widget down: listeners, pointer references, children, parent link.

invalidate():Void

Schedules a repaint for the next frame (cheap; deduplicated).

resize(width:Float, height:Float):Void

Sets the layout size and repaints when it changed.

Parameters:

width

the new layout width in UI units

height

the new layout height in UI units