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

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

डायलॉग और मोडल

डायलॉग वर्तमान स्क्रीन के ऊपर ढेर की गई पॉपअप विंडो हैं। CrossFly में तीन मुख्य हैं Alert (पुष्टि), ActionSheet (क्रियाओं की सूची) और Hint (क्षणिक सूचना, पुराना “Toast”)।

⚠️ Alert/ActionSheet बटनों से जवाब देते हैं, onAnswer से नहीं

ये Window को विस्तारित करते हैं (Picker को नहीं), इसलिए show(callback) कोई मान नहीं लौटाता। उपयोगकर्ता की पसंद बटन के कॉलबैक (buttonAction) से आती है। (देखें मान लौटाना।)

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

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      // Alert — कंस्ट्रक्टर में बटन (0 = Cancelar, 1 = Excluir); क्रिया इंडेक्स द्वारा।
      Button excluir = new Button("Excluir item");
      excluir.onAction(c -> {
         Alert a = new Alert("Excluir", "Confirma a exclusão deste item?", "Cancelar", "Excluir");
         a.buttonAction(1, x -> Hint.show("Item excluído", 2000));   // Cancelar (0) सिर्फ बंद करता है
         // popup: WindowStyle फ़्लुएंट द्वारा आकार देता और पृष्ठभूमि गहरी करता है
         a.getStyle().widthRatio(0.85f).fadeBackground(128).transition(UIConstants.Transition.FADE);
         a.show();
      });
      add(LAY_AUTO, excluir);

      // ActionSheet — पहला तर्क रद्द करने का टेक्स्ट है।
      Button compartilhar = new Button("Compartilhar");
      compartilhar.onAction(c -> {
         ActionSheet sheet = new ActionSheet("Cancelar", "E-mail", "Mensagem");
         sheet.buttonAction(0, x -> Hint.show("Enviado por e-mail", 2000));   // इंडेक्स 0 = E-mail
         sheet.buttonAction(1, x -> Hint.show("Enviado por SMS", 2000));      // इंडेक्स 1 = Mensagem
         sheet.show();
      });
      add(LAY_AUTO, compartilhar);

      // Hint — क्षणिक सूचना (delay ms में)।
      Button avisar = new Button("Mostrar aviso");
      avisar.onAction(c -> Hint.show("Salvo com sucesso", 2000));
      add(LAY_AUTO, avisar);
   }
}

नीचे दिए गए स्निपेट केवल मुख्य भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिए गए MainWindow ढाँचे में रखें।

Alert (पुष्टि करना / सूचित करना)

बटनों के टेक्स्ट कंस्ट्रक्टर में जाते हैं; प्रत्येक की क्रिया buttonAction के साथ इंडेक्स द्वारा जोड़ी जाती है:

// बटन: इंडेक्स 0 = "Cancelar", इंडेक्स 1 = "Excluir"
Alert a = new Alert("Excluir", "Confirma a exclusão deste item?", "Cancelar", "Excluir");
a.buttonAction(1, c -> excluirItem());   // क्रिया यहां से आती है, show(cb) से नहीं; Cancelar सिर्फ बंद करता है
a.show();

ActionSheet (एक क्रिया चुनना)

यह भी टेक्स्ट कंस्ट्रक्टर में लेता है (पहला आर्गुमेंट कैंसल का टेक्स्ट है):

ActionSheet sheet = new ActionSheet("Cancelar", "E-mail", "Mensagem");
sheet.buttonAction(0, c -> enviarPorEmail());   // इंडेक्स 0 = "E-mail"
sheet.buttonAction(1, c -> enviarPorSMS());     // इंडेक्स 1 = "Mensagem"
sheet.cancelAction(c -> {});                     // वैकल्पिक: रद्द करने पर क्रिया
sheet.show();

Hint (क्षणिक सूचना — Toast/ToolTip की जगह)

Hint.show("Salvo com sucesso", 2000);     // खुद गायब हो जाता है

पॉपअप की दिखावट कॉन्फ़िगर करना — WindowStyle

पॉपअप का आकार/स्थिति विंडो के WindowStyle द्वारा तय होती है। उपयोगी फ़ील्ड:

फ़ील्ड प्रभाव
widthRatio / heightRatio स्क्रीन के अंश के रूप में आकार
yRatio / xAbs / yAbs स्थिति
fadeBackground पॉपअप के पीछे की पृष्ठभूमि को गहरा करता है
canHide बाहर छूने पर पॉपअप बंद हो जाता है
canMove उपयोगकर्ता खींच सकता है
transition / transitionDuration प्रवेश/निकास एनिमेशन (डिफ़ॉल्ट NONE, 0.5s)
getStyle().widthRatio = 0.85f;                       // चौड़ाई का 85%
getStyle().fadeBackground = true;                     // गहरी पृष्ठभूमि
getStyle().transition = UIConstants.Transition.FADE;  // fade के साथ प्रकट होता है

अच्छे तौर-तरीके

  • स्पष्ट बटन लेबल (“OK” के बजाय “हटाएँ”); विनाशकारी क्रिया सबसे अंत में।
  • गैर-अवरोधक पुष्टियों के लिए Alert की जगह Hint को प्राथमिकता दें।

आम गलतियाँ

  • alert.show(cb) से cb के चलने की उम्मीद करना — यह नहीं चलता; क्रिया को buttonAction(i, callback) से जोड़ें।
  • addButton(...)/addOption(...) को कॉल करना — वे मौजूद नहीं हैं; टेक्स्ट कंस्ट्रक्टर में जाते हैं और क्रियाएँ इंडेक्स द्वारा।
  • एक ही घटना पर कई पॉपअप ढेर करना।

यह भी देखें

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