# करेंसी फ़ील्ड कैसे बनाएँ

> स्वचालित मौद्रिक फ़ॉर्मैटिंग, दशमलव स्थानों और संख्यात्मक मान की रीडिंग वाला फ़ील्ड।

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

# करेंसी फ़ील्ड कैसे बनाएँ

**उद्देश्य.** एक ऐसा फ़ील्ड बनाना जो मौद्रिक मानों को दाएँ से बाएँ फ़ॉर्मैट करे (उपयोगकर्ता `12345` टाइप करता है और `123,45` देखता है), locale के अनुसार हज़ार के समूहन और दशमलव स्थानों के साथ, और गणना के लिए मान को दशमलव संख्या के रूप में प्राप्त करना।

## उपयोग की गई APIs
- `campo.setMode(EditMode.CURRENCY, true)` — `maskedEdit` के साथ करेंसी मोड चालू करता है। स्वचालित रूप से निकालता है: `validChars = "0123456789.+-"`, `textAlignment = END` (दाएँ संरेखित), `keyboard = CALCULATOR` और, यदि कोई मास्क न हो, `mask = TextField.getDefaultCurrencyMask(decimalPlaces)`।
- `campo.<TextFieldStyle>getStyle().decimalPlaces(2)` — दशमलव स्थानों की संख्या (डिफ़ॉल्ट `2`)। `setMode` से **पहले** परिभाषित करें, क्योंकि डिफ़ॉल्ट मास्क इससे बनता है।
- `TextField.getDefaultCurrencyMask(int decimalPlaces)` — `LocaleFormats.thousandsSeparator` और `LocaleFormats.decimalSeparator` का उपयोग करके डिफ़ॉल्ट मास्क बनाता है (उदा.: pt-BR में `999.999.999,99`)।
- `TextField.getText()` — प्रदर्शन के लिए फ़ॉर्मैटेड मान (`"1.234,56"`)।
- `TextField.getTextWithoutMask()` — दशमलव बिंदु वाला मान, `Double.parseDouble` के लिए तैयार (`"1234.56"`)। ऋणात्मक चिह्न का सम्मान करता है।

> ऋणात्मक चिह्न: मास्क वाले करेंसी मोड में, `-` या `+` टाइप करने से बिना कोई वर्ण डाले चिह्न टॉगल होता है (`handleCharInput`)। ऋणात्मक `getTextWithoutMask()` में उपसर्ग `-` के रूप में दिखता है।

> विभाजक `LocaleFormats` के माध्यम से locale से आते हैं (आरंभीकरण पर भरे जाते हैं)। कोड में `,`/`.` को स्थिर न करें — क्षेत्र का सम्मान करने के लिए `getDefaultCurrencyMask` या `setMode(CURRENCY, true)` का उपयोग करें।

## पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
```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());

      TextField valor = new TextField("");
      valor.caption("Valor");
      valor.<TextFieldStyle>getStyle().decimalPlaces(2); // setMode से पहले सेट करें
      valor.setMode(EditMode.CURRENCY, true);            // मुद्रा + मास्क + कैलकुलेटर कीबोर्ड
      valor.setText("1234.56");                          // "1.234,56" दिखाता है (pt-BR)

      Label resultado = new Label("");

      Button somar = new Button("Somar 10");
      somar.onAction(o ->
      {
         double v = Double.parseDouble(valor.getTextWithoutMask()); // 1234.56
         double total = v + 10;
         resultado.setText("Total: " + total);
      });

      add(LAY_FILL, valor);
      add(LAY_AUTO, somar);
      add(LAY_FILL, resultado);
   }
}
```

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

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

TextField valor = new TextField("");
valor.caption("Valor");
valor.<TextFieldStyle>getStyle().decimalPlaces(2); // setMode से पहले सेट करें
valor.setMode(EditMode.CURRENCY, true);            // मुद्रा + मास्क + कैलकुलेटर कीबोर्ड

// प्रारंभिक मान:
valor.setText("1234.56"); // "1.234,56" दिखाता है (pt-BR)

Button somar = new Button("Somar");
somar.onAction(o ->
{
   double v = Double.parseDouble(valor.getTextWithoutMask()); // 1234.56
   // ... गणना
});
```

कस्टम मास्क के लिए (उदा.: स्पष्ट रूप से 3 दशमलव स्थान):
```java
valor.<TextFieldStyle>getStyle()
   .mask(TextField.getDefaultCurrencyMask(3)); // बाद में setMode(CURRENCY, true)
```

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