यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Slider
Slider एक knob खींचकर [min, max] अंतराल के भीतर एक float मान चुनने देता है। यह निरंतर या असतत (चरणों के साथ, npos के माध्यम से) हो सकता है। अभिविन्यास स्वचालित रूप से पहचाना जाता है: क्षैतिज यदि largura ≥ altura, अन्यथा ऊर्ध्वाधर। knob के बाहर स्पर्श करने पर स्पर्श किए गए बिंदु तक सहजता से एनिमेट होता है; खींचने पर मान निरंतर अद्यतन होता है।
🟢 · पैकेज:
dev.crossfly.ui· विस्तार करता है:Component· शैली:SliderStyle(दबाए गए संस्करणsliderPressed()के साथ)
कब उपयोग करें
- निरंतर या अनुमानित मान: वॉल्यूम, चमक, श्रेणियाँ, ज़ूम।
- कुछ असतत चरणों में चयन (उदा.: 1 से 5)
nposके साथ।
कब उपयोग न करें
- जब उपयोगकर्ता को सटीक संख्या टाइप करने की आवश्यकता हो → संख्यात्मक मोड में
textfieldउपयोग करें।
रूप-रंग
दो खंडों में एक बार — भरा हुआ (knob से पहले) और खाली (बाद में) — साथ में knob। प्रत्येक खंड (bx1/by1/bw1/bh1, bx2/by2/bw2/bh2) और knob (kx/ky/ks) के निर्देशांक layout में परिकलित होते हैं (सभी float)। बार की मोटाई thickness * fontHeight है; knob knobSize * fontHeight है (SliderStyle से)।
पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
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 saida = new Label("Volume: 50");
add(LAY_AUTO, saida);
// निरंतर Slider 0..100, 50 से शुरू; onAction हर value बदलाव पर चलता है
Slider volume = new Slider(0, 100, 50);
volume.onAction(c -> saida.setText("Volume: " + (int) volume.value));
add(LAY_AUTO, volume);
}
}
नीचे के अंश केवल मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, उन्हें ऊपर दिएMainWindowकंकाल में रखें।
बुनियादी उपयोग
Slider volume = new Slider(0, 100, 50); // निरंतर, 50 से शुरू
volume.onAction(c -> System.out.println("valor: " + volume.value));
container.add(LAY_AUTO, volume);
Constructors
| Constructor | विवरण |
|---|---|
Slider(float min, float max, float value) |
निरंतर slider। |
Slider(float min, float max, float value, int npos) |
असतत slider: npos स्थितियाँ (उदा.: 5 → 0%, 25%, 50%, 75%, 100% पर चरण)। |
गुण और अनुकूलन
| गुण / विधि | प्रकार | डिफ़ॉल्ट | क्या करता है |
|---|---|---|---|
value |
float (campo) |
ctor | वर्तमान मान (पठन)। |
min / max |
float (campo) |
ctor | अंतराल की सीमाएँ। |
npos |
int (campo) |
0 |
असतत स्थितियों की संख्या; 0 = निरंतर। |
setValue(float) |
void |
— | मान तुरंत सेट करता है (= setValue(v, false)); clamp + snap लागू करता है। |
setValue(float, boolean animated) |
void |
— | एनिमेशन सहित/रहित मान सेट करता है; runActions() ट्रिगर करता है। |
Callbacks और घटनाएँ
| Callback | कब ट्रिगर होता है |
|---|---|
onAction(Action) |
value में प्रत्येक परिवर्तन पर (खींचना, tap एनिमेशन और setValue)। |
अवस्थाएँ
- dragging: जब तक उपयोगकर्ता knob खींचता है (
onPan), प्रत्येक गति परvalueअद्यतन होता है। - tap-to-jump: knob के बाहर स्पर्श करने पर स्पर्श किए गए बिंदु तक एनिमेट होता है (
PositionAnimation, अवधिstyle.animationDuration)। - pressed: अपनी दबाई गई शैली (
sliderPressed()) उपयोग करता है।
5 पड़ावों वाला असतत slider
Slider nivel = new Slider(0, 100, 50, 5); // चरण: 0,25,50,75,100
nivel.onAction(c -> System.out.println("nível: " + nivel.value));
container.add(LAY_AUTO, nivel);
nivel.setValue(75, true); // 75 तक एनिमेट होता है (निकटतम चरण पर snap होगा)
अच्छे अभ्यास
[min, max]के भीतर एक प्रारंभिकvalueपास करें: constructor clamp नहीं करता (केवलsetValueकरता है)।- ऊर्ध्वाधर अभिविन्यास बाध्य करने के लिए, layout में slider को चौड़ाई से अधिक ऊँचाई दें।
सामान्य गलतियाँ
- स्थिर अभिविन्यास मान लेना: यह layout में चौड़ाई/ऊँचाई अनुपात द्वारा तय होता है।
npos > 0के साथ निरंतर मानों की अपेक्षा करना: असतत मोड में मान हमेशा निकटतम चरण पर “snapped” होता है।