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

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

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” होता है।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपी: cookbook/
  • अवधारणा (layout और उत्तरदायित्व): concepts/
  • संबंधित घटक: progress
क्या यह पृष्ठ उपयोगी था?