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

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

ActionSheet

ActionSheet iOS-शैली की एक्शन शीट है: एक गोल कार्ड जो स्क्रीन के आधार पर एंकर किया गया होता है, जिसमें विकल्प बटनों की सूची और नीचे अलग से एक Cancelar बटन होता है। जब विकल्प इतने अधिक हों कि समा न सकें, तो वे कई कॉलम में वितरित हो जाते हैं (maxColumns तक)। शीट के पीछे एक ग्रे “scrim” (fullscreenColor = 0xD0DDDDDD) होता है जो मोडल प्रभाव देता है।

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

कब उपयोग करें

  • किसी आइटम पर संदर्भ-आधारित क्रियाओं का मेनू (शेयर करें, नाम बदलें, हटाएँ…)।
  • जब आप iOS पैटर्न की तरह किसी विनाशकारी क्रिया (लाल) को दृश्य रूप से उभारना चाहें।

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

  • सरल हाँ/नहीं चयन या संदेश के साथ पुष्टि → Alert का उपयोग करें।
  • निष्क्रिय/क्षणिक फीडबैक → Hint का उपयोग करें।

दिखावट

स्क्रीन की चौड़ाई का ~92% वाला निचला कार्ड, जिसमें विकल्प ढेर किए गए हों, पतली रेखाओं से अलग किए गए हों, और ठीक नीचे पूरी तरह गोल Cancelar बटन हो। स्क्रीन की पृष्ठभूमि एक ग्रे scrim से ढकी रहती है।

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

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 folha de ações");
      abrir.onAction(c ->
      {
         ActionSheet sheet = new ActionSheet("Cancelar", "Compartilhar", "Renomear", "Excluir");
         sheet.buttonAction(0, origin -> { sheet.hide(); Hint.show("Compartilhar", 2000); });
         sheet.buttonAction(1, origin -> { sheet.hide(); Hint.show("Renomear", 2000); });
         sheet.buttonAction(2, origin -> { sheet.hide(); Hint.show("Excluído", 2000); });
         // विनाशकारी क्रिया लाल रंग में
         sheet.buttonStyle(2, ActionSheet.createDefaultButtonStyle().textColor(0xFFFF0000));
         sheet.show();
      });
      add(LAY_AUTO, abrir);
   }
}

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

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

ActionSheet sheet = new ActionSheet("Cancelar", "Compartilhar", "Renomear", "Excluir");
sheet.buttonAction(0, origin -> { compartilhar(); sheet.hide(); });
sheet.buttonAction(1, origin -> { renomear();     sheet.hide(); });
sheet.buttonAction(2, origin -> { excluir();      sheet.hide(); });
sheet.show();

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
ActionSheet(String cancelText, String... buttonTexts) cancelText (डिफ़ॉल्ट "Cancel") और विकल्पों के टेक्स्ट (खाली/null → {"OK"})।

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

गुण / मेथड प्रकार डिफ़ॉल्ट क्या करता है
buttonStyle(ComponentStyle) fluente skin सभी विकल्पों की डिफ़ॉल्ट शैली।
buttonStyle(int index, ComponentStyle) fluente — किसी विशिष्ट विकल्प की शैली का ओवरराइड।
buttonStyle(int index) ComponentStyle — विकल्प की हल की गई शैली।
cancelStyle(ComponentStyle) fluente skin Cancelar बटन की शैली।
containerStyle(ComponentStyle) fluente skin कार्ड की शैली (किनारों का रेडियस)।
maxColumns(int) fluente 1 ओवरफ़्लो में अधिकतम कॉलम (>=1)।
getButton(int) / getCancelButton() Button — show()/onAdd के बाद के बटन।
createDefaultButtonStyle() / createDefaultCancelStyle() / createDefaultContainerStyle() ComponentStyle (static) — डिफ़ॉल्ट शैलियों की फ़ैक्ट्रियाँ।

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

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

चूँकि ActionSheet Window का विस्तार करता है (Picker का नहीं), प्रतिक्रिया इन कॉलबैक के माध्यम से आती है, show(onAnswer) से नहीं। कोई getAnswer() नहीं है। Component.Action का लैम्ब्डा void run(Component origin) है — कोई मान न लौटाएँ।

अवस्थाएँ

  • कॉलबैक रहित विकल्प → डिफ़ॉल्ट क्रिया hide() प्राप्त करता है (शीट बंद कर देता है)।
  • कॉलबैक सहित विकल्प → कॉलबैक चलाता है; यदि वह hide() नहीं कॉल करता, तो शीट खुली रहती है।
  • scrim पर टैप (शीट के बाहर) या back → तब बंद होता है जब canHide सक्रिय हो (डिफ़ॉल्ट)।

विनाशकारी क्रिया को उभारना और 2 कॉलम की अनुमति देना

ActionSheet sheet = new ActionSheet("Cancelar", "Compartilhar", "Renomear", "Excluir");

sheet.buttonAction(0, origin -> { compartilhar(); sheet.hide(); });
sheet.buttonAction(1, origin -> { renomear();     sheet.hide(); });
sheet.buttonAction(2, origin -> { excluir();      sheet.hide(); });

// विनाशकारी विकल्प लाल रंग में
sheet.buttonStyle(2, ActionSheet.createDefaultButtonStyle().textColor(0xFFFF0000));

// यदि बहुत सारे विकल्प हों तो 2 कॉलम तक की अनुमति दें
sheet.maxColumns(2);

sheet.show();

अच्छे तरीके

  • संदर्भ-आधारित क्रियाओं के समूह के लिए उपयोग करें; सरल हाँ/नहीं के लिए Alert को प्राथमिकता दें।
  • विनाशकारी क्रियाओं को buttonStyle(index, ...) से लाल रंग में उभारें।
  • लंबी सूचियों में, maxColumns को कॉन्फ़िगर करें ताकि शीट स्क्रीन से बाहर न जाए।

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

  • hide() के बिना कॉलबैक — शीट खुली रहती है; स्वचालित hide() तभी होता है जब कोई कॉलबैक पंजीकृत न हो।
  • लैम्ब्डा को मान लौटाना — Component.Action.run(...) void है।
  • show() से पहले getButton(i) एक्सेस करना — बटन onAdd में बनते हैं।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपी: cookbook/
  • संबंधित घटक: Alert · Hint
क्या यह पृष्ठ उपयोगी था?