Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Cómo usar un Dropdown de selección
Propósito. Ofrecer selección única a partir de una lista de elementos, mostrada como un
botón con flecha que abre un popup (ListViewWindow) al toque. Tras elegir, el texto del
Dropdown pasa a mostrar el elemento seleccionado. Úsalo para elegir entre pocas/medias
opciones sin ocupar espacio fijo en la pantalla.
APIs usadas
new Dropdown(String placeholder, String[] items)— crea el dropdown con un texto de placeholder y el array de elementos.new Dropdown(String[] items)— variante con placeholder por defecto"Select...".dropdown.onSelect(Component.Action action)— callback disparado después de que el usuario confirme la elección en el popup.dropdown.getSelectedIndex()— índice del elemento seleccionado, o-1si ninguno.dropdown.getSelectedText()— texto del elemento seleccionado, onullsi ninguno.dropdown.setSelectedIndex(int index)— selecciona programáticamente y actualiza el texto mostrado.dropdown.popupHeightRatio(float)/dropdown.popupWidthRatio(float)— ajustan el tamaño del popup relativo a la pantalla.
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
/** Pantalla principal ejecutable. Apunta el launcher (classname) y corre: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
String[] estados = { "Acre", "Bahia", "São Paulo", "Paraná" };
Dropdown uf = new Dropdown("Selecione o estado", estados);
uf.onSelect(origin ->
{
int i = uf.getSelectedIndex(); // -1 si nada elegido
String texto = uf.getSelectedText(); // null si nada elegido
filtrarPorEstado(texto);
});
// Preselección programática (opcional)
uf.setSelectedIndex(2); // "São Paulo"
add(0.5f, uf); // media anchura en la fila (GridLayout)
}
private void filtrarPorEstado(String estado)
{
// ... filtrar la lista según el estado elegido ...
}
}
El fragmento de abajo muestra solo el núcleo. Para ejecutarlo, colócalo en el esqueleto
MainWindowde arriba.
Fragmento mínimo
String[] estados = { "Acre", "Bahia", "São Paulo", "Paraná" };
Dropdown uf = new Dropdown("Selecione o estado", estados);
uf.onSelect(origin ->
{
int i = uf.getSelectedIndex(); // -1 si nada elegido
String texto = uf.getSelectedText(); // null si nada elegido
filtrarPorEstado(texto);
});
// Preselección programática (opcional)
uf.setSelectedIndex(2); // "São Paulo"
add(0.5f, uf); // media anchura en la fila (GridLayout)
Nota de verificación (código 2026). Confirmado en la fuente:
DropdownextiendeButton; constructoresDropdown(String placeholder, String[] items)yDropdown(String[] items);onSelect(Action),getSelectedIndex(),getSelectedText(),setSelectedIndex(int). El popup decide por sí solo si se abre arriba o abajo del dropdown según el espacio disponible en la pantalla, y se cierra al tocar fuera. El callbackonSelectse ejecuta después de que elselectedIndex/textya hayan sido actualizados, por lo que es seguro llamar agetSelectedText()dentro de él.
Profundiza
- Página del widget: Dropdown · Fuente canónica: Capítulo 14
- Selección única/múltiple con marcadores: checkbox-e-radio.md