यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
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()समूह के भीतर इसे रोकता है।