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

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

Alert

Alert CrossFly का मोडल डायलॉग बॉक्स है — MessageBox/AlertDialog का समतुल्य। यह एक शीर्षक, एक संदेश (स्वचालित वर्ड-रैप के साथ) और एक या अधिक एक्शन बटन दिखाता है जो पंक्तियों में व्यवस्थित होते हैं। प्रत्येक बटन का अपना कॉलबैक हो सकता है; कॉलबैक के बिना, बटन केवल डायलॉग बंद करता है। दिखावट (रंग, फ़ॉन्ट, बटनों का लेआउट) सक्रिय Skin से आती है।

🟢 · पैकेज: dev.crossfly.ui · विस्तार करता है: Window · शैली: AlertStyle + WindowStyle

कब उपयोग करें

  • ऐसी पुष्टियाँ जिनमें उपयोगकर्ता की स्वीकृति आवश्यक हो (हटाएँ? सहेजें? त्यागें?)।
  • सरल हाँ/नहीं चयन या ऐसा संदेश जिसके लिए एक “OK” चाहिए।

कब उपयोग न करें

  • निष्क्रिय और क्षणिक फीडबैक (सफलता/त्रुटि/स्थिति) → Hint का उपयोग करें।
  • किसी आइटम पर संदर्भ-आधारित क्रियाओं की सूची (शेयर करें/संपादित करें/हटाएँ) → ActionSheet का उपयोग करें।

दिखावट

केंद्रित कार्ड जिसमें ऊपर शीर्षक, बीच में संदेश और आधार पर बटनों की एक पंक्ति होती है। डिफ़ॉल्ट रूप से पृष्ठभूमि गहरी नहीं होती — शास्त्रीय मोडल प्रभाव के लिए WindowStyle.fadeBackground समायोजित करें।

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

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());

      Button abrir = new Button("Abrir alerta");
      abrir.onAction(c ->
      {
         Alert a = new Alert("Excluir item",
            "Tem certeza que deseja excluir este item? Esta ação não pode ser desfeita.",
            "Excluir", "Cancelar");
         // मॉडलिटी को मजबूत करने के लिए गहरा बैकग्राउंड (alpha 0..255)
         WindowStyle ws = a.getStyle();
         ws.fadeBackground(150);
         // Botão 0 = Excluir -> निष्पादित करता है, बंद करता है और फीडबैक देता है
         a.buttonAction(0, origin ->
         {
            a.hide();
            Hint.show("Item excluído", 2000);
         });
         // Botão 1 = Cancelar: बिना callback -> default पहले से ही hide() कॉल करता है
         a.show();
      });
      add(LAY_AUTO, abrir);
   }
}

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

बुनियादी उपयोग

// buttonTexts वैकल्पिक varargs है — यदि खाली/null हो, तो {"OK"} बन जाता है
Alert a = new Alert("Aviso", "Operação concluída com sucesso.", "OK");
a.show();

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
Alert(String title, String message, String... buttonTexts) title "" हो सकता है (शीर्षक को दृश्य रूप से छिपा देता है)। buttonTexts वैकल्पिक; खाली/null → {"OK"}।

⚠️ कोई स्थैतिक Alert.show(...) नहीं है और न ही कोई कंस्ट्रक्टर जो कॉलबैक ट्रिगर करे। हमेशा new Alert(...) से इंस्टेंस बनाएँ, प्रति-बटन कॉलबैक पंजीकृत करें और show() कॉल करें।

गुण और अनुकूलन

गुण / मेथड प्रकार डिफ़ॉल्ट क्या करता है
style() AlertStyle skin वर्तमान AlertStyle लौटाता है।
style(AlertStyle) fluente — एक कस्टम AlertStyle परिभाषित करता है।
style().buttonLayout(...) IOS/FLUTTER/MATERIAL MATERIAL बटनों की व्यवस्था की शैली।
style().maxButtonsPerRow(int) int skin प्रति पंक्ति बटन; अतिरिक्त नई पंक्तियों में टूट जाते हैं।
skin(Skin) fluente — skin बदलता है और AlertStyle को फिर से अपडेट करता है।
getButton(int index) Button — show() के बाद का बटन (उससे पहले, null)।
getAutoWidth() / getAutoHeight() int — परिकलित आयाम।

कॉलबैक और इवेंट

कॉलबैक कब ट्रिगर होता है
buttonAction(int index, Component.Action action) इंडेक्स index (0-आधारित) वाला बटन टैप करने पर।

⚠️ प्रतिक्रिया show(onAnswer) से नहीं आती। Alert Window का विस्तार करता है, Picker का नहीं — और Window.hide() onAnswer तभी देता है जब this instanceof Picker हो। इसलिए, प्रत्येक बटन पर प्रतिक्रिया देने के लिए buttonAction(index, action) का उपयोग करें। Alert में कोई getAnswer() नहीं है।

कॉलबैक का प्रकार Component.Action है, जिसका मेथड void run(Component origin) है — लैम्ब्डा का मुख्य भाग कोई मान नहीं लौटाता (कोई return null; नहीं)।

अवस्थाएँ

  • पंजीकृत कॉलबैक रहित बटन → डिफ़ॉल्ट क्रिया hide() प्राप्त करता है (डायलॉग बंद कर देता है)।
  • कॉलबैक सहित बटन → कॉलबैक चलाता है; यदि कॉलबैक बंद नहीं करता, तो डायलॉग खुला रहता है (आप स्वयं a.hide() कॉल करें)।
  • “वापस”/back इशारा → यदि WindowStyle.canHide (डिफ़ॉल्ट true) है, तो सम्मानित किया जाता है।

गहरी पृष्ठभूमि के साथ पुष्टि

Alert confirm = new Alert("Excluir item",
   "Tem certeza que deseja excluir este item? Esta ação não pode ser desfeita.",
   "Excluir", "Cancelar");

// बैकग्राउंड को गहरा करके मॉडलिटी को मजबूत करता है (alpha 0..255)
WindowStyle ws = confirm.getStyle();
ws.fadeBackground(150);

// Botão 0 = Excluir -> निष्पादित करता है, बंद करता है और फीडबैक देता है
confirm.buttonAction(0, origin ->
{
   excluirItem();
   confirm.hide();
   Hint.show("Item excluído", 2000);
});
// Botão 1 = Cancelar: बिना callback -> default पहले से ही hide() कॉल करता है

confirm.show();

बटनों का लेआउट चुनना

Alert a = new Alert("Salvar", "Deseja salvar as alterações?", "Salvar", "Descartar");
a.style().buttonLayout(AlertStyle.ButtonLayout.IOS)  // IOS / FLUTTER / MATERIAL
         .maxButtonsPerRow(2);
a.show();

अच्छे तरीके

  • ऐसे निर्णयों के लिए उपयोग करें जिनमें स्वीकृति आवश्यक हो। निष्क्रिय फीडबैक के लिए Hint को प्राथमिकता दें।
  • कम बटन रखें — बहुत सारे बटन पंक्तियों में टूट जाते हैं और डायलॉग को ऊँचा बना देते हैं।
  • जब भी शास्त्रीय मोडल प्रभाव चाहें, fadeBackground के साथ जोड़ें।

सामान्य गलतियाँ

  • show(onAnswer) के माध्यम से प्रतिक्रिया की अपेक्षा करना — यह केवल Picker के लिए है। buttonAction(...) पंजीकृत करें।
  • show() से पहले getButton(i) एक्सेस करना — बटन onAdd में बनते हैं और उससे पहले null लौटाते हैं।
  • buttonAction के लैम्ब्डा को मान लौटाना — Action.run(...) void है।

यह भी देखें

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