मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

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 की आवश्यकता होती है।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपीज़: cookbook/
  • अवधारणा (वर्चुअल कीबोर्ड, फ़ोकस): concepts/
  • संबंधित कॉम्पोनेंट: TextField · TextInput · TextArea
क्या यह पृष्ठ उपयोगी था?