यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
करेंसी फ़ील्ड कैसे बनाएँ
उद्देश्य. एक ऐसा फ़ील्ड बनाना जो मौद्रिक मानों को दाएँ से बाएँ फ़ॉर्मैट करे (उपयोगकर्ता 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)का उपयोग करें।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
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ढाँचे में रखें।
न्यूनतम अंश
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 दशमलव स्थान):
valor.<TextFieldStyle>getStyle()
.mask(TextField.getDefaultCurrencyMask(3)); // बाद में setMode(CURRENCY, true)
गहराई से जानें
- मास्क और कीबोर्ड · टेक्स्ट फ़ील्ड
- सहयोगी रेसिपी: CPF/CEP/तिथि मास्क · न्यूमेरिक कीबोर्ड
- कैननिकल स्रोत: अध्याय 14 — मूल विजेट · Enums (UIConstants)