Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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 -1 si ninguno.
  • dropdown.getSelectedText() — texto del elemento seleccionado, o null si 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 MainWindow de 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: Dropdown extiende Button; constructores Dropdown(String placeholder, String[] items) y Dropdown(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 callback onSelect se ejecuta después de que el selectedIndex/text ya hayan sido actualizados, por lo que es seguro llamar a getSelectedText() dentro de él.

Profundiza

¿Te resultó útil esta página?