यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Switch
Switch एक चालू/बंद स्विच है जिसमें गोल ट्रैक और एक “thumb” (स्लाइडिंग बटन) होता है जो off और on अवस्थाओं के बीच एनिमेटेड रूप से सरकता है। यह बगल में एक वैकल्पिक टेक्स्ट लेबल और on/off आइकन स्वीकार करता है जो ट्रांज़िशन में crossfade करते हैं। यह किसी तत्काल प्राथमिकता को सक्षम/अक्षम करने के लिए आदर्श नियंत्रण है, iOS/Material शैली में।
🟢 · पैकेज:
dev.crossfly.ui· विस्तार करता है:Component(Checkable,AlphaAnimation.Animateलागू करता है) · शैली:SwitchStyle
कब उपयोग करें
- तत्काल प्रभाव के साथ किसी एकल प्राथमिकता को चालू/बंद करना (उदा.: “सूचनाएँ सक्षम करें”)।
- जहाँ उपयोगकर्ता एक दृश्य toggle की अपेक्षा करता हो, न कि चेकबॉक्स की।
कब उपयोग न करें
- एक साथ दिखने वाले कई विकल्पों में से चुनने के लिए →
groupके भीतरoptionउपयोग करें। - विकल्पों की बड़ी सूची के लिए →
dropdownउपयोग करें।
रूप-रंग
गोल ट्रैक (trackRadius = trackH/2) जिसमें एक वर्गाकार thumb thumbMinX (off) से thumbMaxX (on) तक चलता है। ट्रैक की चौड़ाई, ऊँचाई और thumb का आकार फ़ॉन्ट की ऊँचाई के समानुपाती होते हैं (SwitchStyle का switchWidth, trackHeight, thumbSizeRatio)। वैकल्पिक लेबल स्विच के बगल में रहता है; जब iconAlignH == END हो तो स्विच दाईं ओर और टेक्स्ट बाईं ओर जाता है, अन्यथा टेक्स्ट दाईं ओर रहता है।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
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());
// Label जो switch की स्थिति दर्शाता है
Label saida = new Label("Recurso: desligado");
add(LAY_AUTO, saida);
// रॉतल वाला Switch; onAction तभी चलता है जब स्थिति बदलती है
Switch toggle = new Switch("Ativar recurso");
toggle.checked(false); // प्रारंभिक स्थिति, बिना एनिमेशन
toggle.onAction(c -> saida.setText("Recurso: " + (toggle.checked ? "ligado" : "desligado")));
add(LAY_AUTO, toggle);
}
}
नीचे के अंश केवल मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिएMainWindowकंकाल में रखें।
बुनियादी उपयोग
Switch toggle = new Switch("Ativar recurso");
toggle.checked(true); // आरंभिक स्थिति, बिना एनिमेशन
toggle.onAction(c -> System.out.println("estado: " + toggle.checked));
container.add(LAY_AUTO, toggle);
Constructors
| Constructor | विवरण |
|---|---|
Switch() |
अचयनित, लेबल रहित (केवल-आइकन मोड)। |
Switch(String text) |
अचयनित, बगल में लेबल के साथ। |
गुण और अनुकूलन
| गुण / विधि | प्रकार | डिफ़ॉल्ट | क्या करता है |
|---|---|---|---|
text(String) |
Switch (fluente) |
null |
लेबल सेट करता है। |
checked(boolean) |
Switch (fluente) |
false |
एनिमेशन रहित प्रारंभिक अवस्था (progress सीधे समायोजित करता है); समूह को सूचित करता है। |
setChecked(boolean) |
void |
— | एनिमेशन सहित अवस्था; समूह को सूचित करता है। |
toggle() |
void |
— | अवस्था बदलता है (समूह का सम्मान करते हुए)। |
checked |
boolean (campo) |
false |
वर्तमान तार्किक अवस्था (पठन)। |
progress |
float (campo) |
0 |
thumb की प्रक्षेपित स्थिति: 0 = off, 1 = on। |
.group(Group) |
Switch (fluente) |
— | पारस्परिक अपवर्जन के लिए किसी group से जोड़ता है। |
Callbacks और घटनाएँ
| Callback | कब ट्रिगर होता है |
|---|---|
onAction(Action) |
onTouchUp में, केवल तभी जब अवस्था (checked) बदली हो। |
अवस्थाएँ
- checked / unchecked:
checked(boolean)(एनिमेशन रहित) याsetChecked(boolean)(एनिमेशन सहित) द्वारा नियंत्रित।checkedफ़ील्ड अवस्था दर्शाता है। - एनिमेशन में:
progressAlphaAnimationके माध्यम से 0 से 1 (या इसके विपरीत) संक्रमित होता है (अवधि =style.animationDuration)। - समूह में:
toggle()किसी समूह के पहले से चयनित स्विच को अचयनित नहीं करता (रेडियो व्यवहार)।
किसी Group में परस्पर अनन्य कई स्विच (रेडियो)
Group modo = new Group();
Switch claro = new Switch("Tema claro").group(modo).checked(true);
Switch escuro = new Switch("Tema escuro").group(modo);
container.add(LAY_AUTO, claro);
container.add(LAY_AUTO, escuro);
// किसी एक को चुनने पर दूसरा अपने आप अनचेक हो जाता है।
अच्छे अभ्यास
- प्रारंभिक अवस्था के लिए
checked(boolean)को प्राथमिकता दें (progressऔर समूह को एक साथ समायोजित करता है); runtime में एनिमेटेड ट्रांज़िशन चाहिए तोsetCheckedउपयोग करें। onActionके भीतरisChecked()याcheckedफ़ील्ड द्वारा अवस्था पढ़ें।
सामान्य गलतियाँ
- हर इंटरैक्शन पर
onActionट्रिगर होने की अपेक्षा करना: यह केवल तभी ट्रिगर होता है जबcheckedबदलता है। - किसी
Groupके भीतर पहले से चयनित स्विच पर क्लिक करके उसे “बंद” करने का प्रयास:toggle()इसे रोकता है (रेडियो)।