यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Keypad
Keypad एक संख्यात्मक कीबोर्ड वाली विंडो (Window) है जो फ़ोकस में मौजूद टेक्स्ट फ़ील्ड के ऊपर या नीचे जुड़ती है। कैलकुलेटर मोड (isCalculator) में, यह + − × ÷ = वाला एक 4था कॉलम जोड़ती है और टाइप की गई अंकगणित को हल करती है, परिणाम को फ़ील्ड में वापस लिखती है।
उपयोग लगभग हमेशा अप्रत्यक्ष होता है: आप TextField में Keyboard.KEYPAD/CALCULATOR (या EditMode.CURRENCY) कॉन्फ़िगर करते हैं और फ़ोकस मिलने पर फ़ील्ड स्वयं Keypad को इंस्टैंशिएट और प्रदर्शित करता है। इसे मैन्युअल रूप से इंस्टैंशिएट करना दुर्लभ है।
🔴 · पैकेज:
dev.crossfly.ui· विस्तारित करता है:Window· स्टाइल:KeypadStyle
कब उपयोग करें
- अंतर्निहित संख्यात्मक इनपुट (नेटिव कीबोर्ड पर निर्भर हुए बिना), डेस्कटॉप पर भी।
- कैलकुलेटर मोड: उपयोगकर्ता को किसी मौद्रिक/संख्यात्मक फ़ील्ड के भीतर गणना करने देना।
कब उपयोग न करें
- मुक्त पाठ इनपुट → नेटिव कीबोर्ड (
Keyboard.DEFAULT) रहने दें। - आप शायद ही कभी
Keypadको सीधे इंस्टैंशिएट करते हैं —TextFieldमें कीबोर्ड कॉन्फ़िगर करें।
दिखावट
बटनों का ग्रिड (GridLayout): 3 कॉलम (0–9, backspace, enter) या कैलकुलेटर मोड में 4 कॉलम (ऑपरेटर के साथ)। बटन keyWidth/keyHeight (× फ़ॉन्ट ऊंचाई) और चारों कोनों पर गोल किनारों का उपयोग करते हैं। विंडो फ़ील्ड के नीचे स्थित होती है यदि जगह हो, अन्यथा ऊपर (तैरते caption से अवगत)।
``
पूर्ण उदाहरण (कॉपी, पेस्ट और रन करें)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
// संख्यात्मक फील्ड जो Keypad की कुंजियां प्राप्त करेगा
TextField valor = new TextField().caption("Quantidade");
add(LAY_AUTO, valor);
// आउटपुट Label
Label saida = new Label("Digite no keypad e toque em Confirmar");
add(LAY_AUTO, saida);
// बटन जो फील्ड से जुड़ा Keypad खोलता है (सीधा उपयोग)
Button abrir = new Button("Abrir keypad").onAction(c -> {
Keypad kp = new Keypad(valor); // target ऊपर वाला TextField है
kp.show();
});
add(LAY_AUTO, abrir);
// Keypad फील्ड में लिखता है; भेजते समय getText() पढ़ें
Button confirmar = new Button("Confirmar")
.onAction(c -> saida.setText("Valor: " + valor.getText()));
add(LAY_AUTO, confirmar);
}
}
नीचे दिए गए अंश केवल मुख्य भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। रन करने के लिए, इन्हें ऊपर दिएMainWindowढांचे में रखें।
बुनियादी उपयोग (अप्रत्यक्ष, TextField के माध्यम से)
// फोकस होने पर TextField स्वयं Keypad दिखाता है:
TextField valor = new TextField().caption("Quantidade");
valor.setKeyboard(Keyboard.KEYPAD); // अंतर्निहित संख्यात्मक कीबोर्ड
container.add(LAY_AUTO, valor);
// कैलकुलेटर मोड — CURRENCY पहले से ही डिफ़ॉल्ट रूप से CALCULATOR उपयोग करता है:
TextField preco = new TextField().caption("Preço");
preco.setMode(EditMode.CURRENCY, true);
container.add(LAY_AUTO, preco);
प्रत्यक्ष उपयोग (उन्नत)
// एक फील्ड से Keypad को मैन्युअली जोड़ना:
Keypad kp = new Keypad(campo); // फील्ड एक TextInput है (TextField/TextArea)
kp.show();
// कैलकुलेटर मोड में:
Keypad calc = new Keypad(campo);
calc.<KeypadStyle>getStyle().isCalculator(true);
calc.show();
कंस्ट्रक्टर
| कंस्ट्रक्टर | विवरण |
|---|---|
Keypad(TextInput target) |
target फ़ील्ड से जुड़ा keypad बनाता है जो कुंजियां प्राप्त करेगा |
गुण और अनुकूलन (KeypadStyle के माध्यम से)
| गुण | प्रकार | क्या करता है |
|---|---|---|
.isCalculator(boolean) |
boolean |
+ − × ÷ वाला 4था कॉलम और = बटन |
.is1to9(boolean) |
boolean |
कुंजियों का क्रम (शीर्ष पर 1-2-3 बनाम 7-8-9) |
.keyWidth / .keyHeight |
float |
कुंजियों का आकार (× फ़ॉन्ट ऊंचाई) |
.digitColor / .specialColor |
ARGB | अंकों / विशेष कुंजियों का रंग |
.keypadBackColor |
ARGB | कुंजियों की पृष्ठभूमि |
.enterIcon / .backspaceIcon |
Icon |
enter और backspace के आइकन |
.radiusTL/TR/BL/BR |
float |
कोने की त्रिज्याएं |
कॉलबैक और इवेंट
Keypad अपना कोई onAction उजागर नहीं करता। यह कुंजियों को target को भेजता है:
- अंक →
target.onKeyTyped(c)। - Backspace / Enter →
target.onKeyDown(Input.Keys.BACKSPACE / ENTER)। - कैलकुलेटर मोड में,
=गणना करता है और परिणाम कोtarget.setText(...)के माध्यम से लिखता है। - बंद होने पर (
onRemove), फ़ोकसrestoreFocusAtEnd()के साथ फ़ील्ड पर वापस आता है।
प्रतिक्रिया देने के लिए, फ़ील्ड (getText()) को देखें, Keypad को नहीं।
अवस्थाएं
- Enter ↔ Equals: कैलकुलेटर मोड में, निचला बटन लंबित ऑपरेशन होने के अनुसार
Enter(आइकन) और=(पाठ) के बीच बदलता है। - विंडो बाहर छूने पर या पुष्टि करने पर (
Enter) बंद हो जाती है।
अंतर्निहित कैलकुलेटर वाला मौद्रिक फ़ील्ड
TextField total = new TextField().caption("Total");
total.setMode(EditMode.CURRENCY, true); // Keypad को कैलकुलेटर मोड में खोलता है
container.add(LAY_AUTO, total);
// उपयोगकर्ता "10 + 5 =" टाइप करता है और फील्ड 15,00 दिखाने लगता है।
डेस्कटॉप पर Keypad को बाध्य करना
// डेस्कटॉप पर NUMERIC showInput() में स्वतः KEYPAD बन जाता है;
// किसी भी प्लेटफॉर्म पर Keypad सुनिश्चित करने हेतु, KEYPAD को स्पष्ट रूप से उपयोग करें:
TextField codigo = new TextField().caption("Código");
codigo.setKeyboard(Keyboard.KEYPAD);
container.add(LAY_AUTO, codigo);
सर्वोत्तम प्रथाएं
Keypadको सीधे इंस्टैंशिएट करने के बजायTextFieldमें कीबोर्ड कॉन्फ़िगर करना (setKeyboard/setMode) प्राथमिकता दें।- मौद्रिक इनपुट के लिए,
EditMode.CURRENCYपहले ही कैलकुलेटर लाता है — इसके अलावा कुछ कॉन्फ़िगर करने की आवश्यकता नहीं।
सामान्य गलतियां
KeypadमेंonActionपंजीकृत करना: यह अपनी कोई कार्रवाई नहीं करता; लक्ष्य फ़ील्ड को देखें।- फ़ोकस करने योग्य
targetके बिनाKeypadइंस्टैंशिएट करना: कुंजियां भेजने के लिए इसे एकTextInputकी आवश्यकता होती है।