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 abrir un teclado numérico
Propósito. Hacer que el campo abra un teclado solo de números al recibir el foco — teclado numérico nativo del sistema, el Keypad integrado de CrossFly, o la variante calculadora.
APIs usadas
campo.keyboard(Keyboard.NUMERIC)— atajo fluido (equivalente asetKeyboard). Tipos disponibles (enumKeyboard):NONE,DEFAULT,NUMERIC,KEYPAD,CALCULATOR,DATE,TIME.campo.setKeyboard(Keyboard kbd)— define el teclado. PasarKeyboard.DEFAULThace que el campo adopte el teclado implícito por elEditModeactual (mode.getKeyboard()).campo.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC)— define el modo numérico; como efecto,mode(...)siempre deriva el teclado del modo (NUMERIC → NUMERIC). Para sobrescribir, llama akeyboard(...)DESPUÉS demode(...).
Cuál elegir:
| Teclado | Comportamiento |
|---|---|
NUMERIC |
Teclado numérico nativo del SO. En escritorio recae en KEYPAD. |
KEYPAD |
Componente Keypad de CrossFly (rejilla de teclas integrada). |
CALCULATOR |
Keypad en modo calculadora (isCalculator(true)). |
En escritorio (
Device.platform.isDesktop()),NUMERICse convierte automáticamente aKEYPADenshowInput(), ya que no hay teclado virtual nativo.
Ejemplo completo (copiar, pegar y ejecutar)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*; // TextFieldStyle (config en el estilo)
/** 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());
// 1) Teclado numérico nativo (KEYPAD en desktop)
TextField idade = new TextField("");
idade.caption("Idade");
idade.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC);
// 2) Forzar el Keypad incrustado, independiente del modo
TextField pin = new TextField("");
pin.caption("PIN");
pin.keyboard(Keyboard.KEYPAD);
// 3) Calculadora
TextField total = new TextField("");
total.caption("Total");
total.keyboard(Keyboard.CALCULATOR);
Label resultado = new Label("");
Button enviar = new Button("Enviar");
enviar.onAction(o ->
resultado.setText("Idade: " + idade.getText()
+ " · PIN: " + pin.getText()
+ " · Total: " + total.getText()));
add(LAY_FILL, idade);
add(LAY_FILL, pin);
add(LAY_FILL, total);
add(LAY_AUTO, enviar);
add(LAY_FILL, resultado);
}
}
El fragmento de abajo muestra solo el núcleo. Para ejecutarlo, colócalo en el esqueleto
MainWindowde arriba.
Fragmento mínimo
import dev.crossfly.ui.*;
import dev.crossfly.ui.style.*;
import static dev.crossfly.ui.UIConstants.EditMode;
import static dev.crossfly.ui.UIConstants.Keyboard;
// 1) Teclado numérico nativo (KEYPAD en desktop)
TextField idade = new TextField("");
idade.caption("Idade");
idade.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC);
// 2) Forzar el Keypad incrustado, independiente del modo
TextField pin = new TextField("");
pin.caption("PIN");
pin.keyboard(Keyboard.KEYPAD);
// 3) Calculadora
TextField total = new TextField("");
total.keyboard(Keyboard.CALCULATOR);
Para restringir a dígitos además de abrir el teclado, combínalo con validChars (ver Validar un campo):
idade.<TextFieldStyle>getStyle()
.mode(EditMode.NUMERIC)
.validChars("0123456789")
.maxLength(3);
Profundiza
- Máscaras y teclados · Keypad
- Recetas hermanas: Máscara de moneda · Validar un campo
- Fuente canónica: Capítulo 14 — Widgets básicos · Enums (UIConstants)
¿Te resultó útil esta página?¡Gracias por tu opinión!