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

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

Option

Option एक चयन नियंत्रण है जो एनिमेटेड क्रॉसफेड के साथ “on” और “off” आइकन के बीच स्विच करता है, साथ ही एक वैकल्पिक लेबल। किसी समूह के बाहर यह चेकबॉक्स की तरह व्यवहार करता है (स्वतंत्र रूप से चिह्नित/अचिह्नित); किसी group के अंदर यह रेडियो बटन की तरह व्यवहार करता है (परस्पर अपवर्जन)। check और radio के बीच का दृश्य अंतर स्टाइल से आता है (Styles.check() बनाम Styles.radio()), क्लास से नहीं।

🟢 · पैकेज: dev.crossfly.ui · एक्सटेंड करता है: Component (Checkable, AlphaAnimation.Animate लागू करता है) · स्टाइल: OptionStyle

कब उपयोग करें

  • एकल चेकबॉक्स या स्वतंत्र चेकबॉक्स की सूची (“Aceito os termos”)।
  • group के माध्यम से एक साथ दिखने वाले अपवर्जी विकल्पों का छोटा समूह (रेडियो)।

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

  • स्विच रूपक वाले चालू/बंद के लिए → switch का उपयोग करें।
  • कई अपवर्जी विकल्पों के लिए (स्थान बचाते हुए) → dropdown का उपयोग करें।

दिखावट

on/off आइकन (OptionStyle से) + वैकल्पिक लेबल। आइकन का संरेखण (iconAlignH/iconAlignV) पक्ष तय करता है; टेक्स्ट विपरीत पक्ष घेरता है (textAlignH/textAlignV)। progress (0→1) संक्रमण के दौरान दोनों आइकन के अल्फा को मिलाता है।

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

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.style.*;   // Styles.check() / Styles.radio()

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

      Label saida = new Label("Escolha uma opção");
      add(LAY_AUTO, saida);

      // स्वतंत्र Checkbox (बिना समूह)
      Option aceito = new Option("Aceito os termos").style(Styles.check().copy());
      aceito.onAction(c -> saida.setText("Termos: " + (aceito.checked ? "aceitos" : "recusados")));
      add(LAY_AUTO, aceito);

      // Radio: एक Group के भीतर तीन अपवर्जी विकल्प
      Group pagamento = new Group();
      Option cartao = new Option("Cartão").style(Styles.radio().copy()).group(pagamento).checked(true);
      Option boleto = new Option("Boleto").style(Styles.radio().copy()).group(pagamento);
      Option pix    = new Option("Pix").style(Styles.radio().copy()).group(pagamento);

      Component.Action mostra = c -> {
         String sel = cartao.isChecked() ? "Cartão" : boleto.isChecked() ? "Boleto" : "Pix";
         saida.setText("Pagamento: " + sel);
      };
      cartao.onAction(mostra);
      boleto.onAction(mostra);
      pix.onAction(mostra);

      add(LAY_AUTO, cartao);
      add(LAY_AUTO, boleto);
      add(LAY_AUTO, pix);
   }
}

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

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

Option aceito = new Option("Aceito os termos");
aceito.style(Styles.check().copy());
aceito.checked(true);                                   // प्रारंभ में चयनित
aceito.onAction(c -> System.out.println("aceito: " + aceito.checked));
container.add(LAY_AUTO, aceito);

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
Option() अचिह्नित, बिना लेबल।
Option(String text) अचिह्नित, लेबल के साथ।

प्रॉपर्टीज़ और अनुकूलन

प्रॉपर्टी / मेथड प्रकार डिफ़ॉल्ट क्या करता है
text(String) Option (धाराप्रवाह) null लेबल सेट करता है।
checked(boolean) Option (धाराप्रवाह) false एनिमेशन बिना आरंभिक स्थिति; समूह को सूचित करता है।
setChecked(boolean) void — एनिमेशन के साथ स्थिति (क्रॉसफेड); समूह को सूचित करता है।
toggle() void — स्थिति को टॉगल करता है (समूह का सम्मान करते हुए)।
checked boolean (फ़ील्ड) false वर्तमान तार्किक स्थिति (सीधे पढ़ी/लिखी जा सकती है)।
.group(Group) Option (धाराप्रवाह) — किसी group से जोड़ता है → रेडियो बन जाता है।

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

कॉलबैक कब ट्रिगर होता है
onAction(Action) onTouchUp में, केवल तभी जब checked बदला हो।

स्थितियां

  • checked / unchecked: checked(boolean) (बिना एनिमेशन) या setChecked(boolean) (क्रॉसफेड) के माध्यम से। सार्वजनिक checked फ़ील्ड भी सीधे असाइन की जा सकती है।
  • radio (समूह में): toggle() पहले से चयनित आइटम को अचिह्नित करने से रोकता है; दूसरे को चिह्नित करने पर यह स्वचालित रूप से अचिह्नित हो जाता है।

रेडियो: एक Group में तीन अपवर्जी विकल्प

Group g = new Group();

Option a = new Option("Opção A").style(Styles.radio().copy()).group(g).checked(true);
Option b = new Option("Opção B").style(Styles.radio().copy()).group(g);
Option c = new Option("Opção C").style(Styles.radio().copy()).group(g);

container.add(LAY_AUTO, a);
container.add(LAY_AUTO, b);
container.add(LAY_AUTO, c);
// किसी एक को चुनने पर बाकी स्वचालित रूप से अचयनित हो जाती हैं।

सर्वोत्तम अभ्यास

  • रेडियो के लिए, सभी विकल्पों पर .group(g) कॉल करें और Styles.radio() से अंतर करें; चेकबॉक्स के लिए, समूह को छोड़ दें और Styles.check() का उपयोग करें।
  • आरंभिक स्थिति के लिए checked फ़ील्ड के बजाय checked(boolean) को प्राथमिकता दें: यह progress को भी समायोजित करता है और समूह को सूचित करता है।

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

  • किसी विकल्प पर .group(g) भूल जाना: बिना समूह वे स्वतंत्र चेकबॉक्स बन जाते हैं (बिना परस्पर अपवर्जन)।
  • रेडियो को उस पर क्लिक करके “अचिह्नित” करने की उम्मीद करना: toggle() समूह के भीतर इसे रोकता है।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपी: cookbook/
  • अवधारणा (स्थिति-अनुसार स्टाइल): concepts/
  • संबंधित कंपोनेंट: group · switch · dropdown
क्या यह पृष्ठ उपयोगी था?