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

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

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

उद्देश्य. फोकस मिलने पर फ़ील्ड को केवल संख्याओं वाला कीबोर्ड खुलवाना — सिस्टम का नेटिव न्यूमेरिक कीबोर्ड, 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 में बदल दिया जाता है, क्योंकि कोई नेटिव वर्चुअल कीबोर्ड नहीं होता।

पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

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 ढाँचे में रखें।

न्यूनतम अंश

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 के साथ मिलाएँ (देखें किसी फ़ील्ड को सत्यापित करें):

idade.<TextFieldStyle>getStyle()
   .mode(EditMode.NUMERIC)
   .validChars("0123456789")
   .maxLength(3);

गहराई से जानें

क्या यह पृष्ठ उपयोगी था?