# न्यूमेरिक कीबोर्ड कैसे खोलें

> नेटिव न्यूमेरिक कीबोर्ड, अंतर्निहित Keypad या कैलकुलेटर के बीच चुनें।

Source: https://crossfly.dev/hi/docs/cookbook/forms/teclado-numerico — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# न्यूमेरिक कीबोर्ड कैसे खोलें

**उद्देश्य.** फोकस मिलने पर फ़ील्ड को केवल संख्याओं वाला कीबोर्ड खुलवाना — सिस्टम का नेटिव न्यूमेरिक कीबोर्ड, CrossFly का अंतर्निहित Keypad, या कैलकुलेटर वेरिएंट।

## उपयोग की गई APIs
- `campo.keyboard(Keyboard.NUMERIC)` — फ़्लुएंट शॉर्टकट (`setKeyboard` के समतुल्य)। उपलब्ध प्रकार (enum `Keyboard`): `NONE`, `DEFAULT`, `NUMERIC`, `KEYPAD`, `CALCULATOR`, `DATE`, `TIME`।
- `campo.setKeyboard(Keyboard kbd)` — कीबोर्ड परिभाषित करता है। `Keyboard.DEFAULT` पास करने से फ़ील्ड वर्तमान `EditMode` द्वारा निहित कीबोर्ड (`mode.getKeyboard()`) अपनाता है।
- `campo.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC)` — न्यूमेरिक मोड परिभाषित करता है; परिणामस्वरूप, `mode(...)` **हमेशा** मोड से कीबोर्ड निकालता है (`NUMERIC → NUMERIC`)। ओवरराइड करने के लिए, `mode(...)` के बाद `keyboard(...)` को कॉल करें।

कौन सा चुनें:

| कीबोर्ड | व्यवहार |
|---|---|
| `NUMERIC` | OS का नेटिव न्यूमेरिक कीबोर्ड। डेस्कटॉप पर `KEYPAD` पर गिर जाता है। |
| `KEYPAD` | CrossFly का `Keypad` कंपोनेंट (अंतर्निहित कुंजियों का ग्रिड)। |
| `CALCULATOR` | कैलकुलेटर मोड में `Keypad` (`isCalculator(true)`)। |

> डेस्कटॉप पर (`Device.platform.isDesktop()`), `NUMERIC` को `showInput()` में स्वचालित रूप से `KEYPAD` में बदल दिया जाता है, क्योंकि कोई नेटिव वर्चुअल कीबोर्ड नहीं होता।

## पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
```java
package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*;   // TextFieldStyle (style में config)

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      // 1) नेटिव न्यूमेरिक कीबोर्ड (डेस्कटॉप पर KEYPAD)
      TextField idade = new TextField("");
      idade.caption("Idade");
      idade.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC);

      // 2) मोड की परवाह किए बिना, बिल्ट-इन Keypad को बाध्य करें
      TextField pin = new TextField("");
      pin.caption("PIN");
      pin.keyboard(Keyboard.KEYPAD);

      // 3) कैलकुलेटर
      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);
   }
}
```

> नीचे दिया गया अंश **केवल मुख्य भाग** दिखाता है। चलाने के लिए, इसे ऊपर दिए गए `MainWindow` ढाँचे में रखें।

## न्यूनतम अंश
```java
import dev.crossfly.ui.*;
import dev.crossfly.ui.style.*;
import static dev.crossfly.ui.UIConstants.EditMode;
import static dev.crossfly.ui.UIConstants.Keyboard;

// 1) नेटिव न्यूमेरिक कीबोर्ड (डेस्कटॉप पर KEYPAD)
TextField idade = new TextField("");
idade.caption("Idade");
idade.<TextFieldStyle>getStyle().mode(EditMode.NUMERIC);

// 2) मोड की परवाह किए बिना, बिल्ट-इन Keypad को बाध्य करें
TextField pin = new TextField("");
pin.caption("PIN");
pin.keyboard(Keyboard.KEYPAD);

// 3) कैलकुलेटर
TextField total = new TextField("");
total.keyboard(Keyboard.CALCULATOR);
```

कीबोर्ड खोलने के अलावा अंकों तक सीमित करने के लिए, इसे `validChars` के साथ मिलाएँ (देखें [किसी फ़ील्ड को सत्यापित करें](/docs/cookbook/forms/validar-campo)):
```java
idade.<TextFieldStyle>getStyle()
   .mode(EditMode.NUMERIC)
   .validChars("0123456789")
   .maxLength(3);
```

## गहराई से जानें
- [मास्क और कीबोर्ड](/docs/ui/forms-and-input/masks-and-keyboards) · [Keypad](/docs/ui/widgets/keypad)
- सहयोगी रेसिपी: [करेंसी मास्क](/docs/cookbook/forms/mascara-moeda) · [किसी फ़ील्ड को सत्यापित करें](/docs/cookbook/forms/validar-campo)
- कैननिकल स्रोत: अध्याय 14 — मूल विजेट · [Enums (UIConstants)](/docs/reference/enums-uiconstants)
