यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
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)से नहीं आती।AlertWindowका विस्तार करता है,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है।
यह भी देखें
- क्षेत्र गाइड:
ui/· रेसिपी:cookbook/ - संबंधित घटक:
ActionSheet·Hint