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

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

Label

Label सबसे अधिक उपयोग किया जाने वाला प्रदर्शन विजेट है: यह केवल-पढ़ने योग्य पाठ दिखाता है, स्वचालित पंक्ति विच्छेदन (word-wrap), कई पंक्तियों (\n के माध्यम से स्पष्ट या स्वचालित) और बाईं और/या दाईं ओर वैकल्पिक आइकन के साथ। यह स्पर्श पर प्रतिक्रिया नहीं करता — कार्रवाइयों के लिए Button का उपयोग करें; संपादन योग्य पाठ के लिए TextField/TextArea का उपयोग करें।

रेंडरिंग सक्रिय Design को सौंपी जाती है: Label केवल onLayout() में निर्देशांक गणना करता है और सार्वजनिक फ़ील्ड उजागर करता है जिनका Design उपभोग करता है (फ़ॉन्ट, रंग और बॉर्डर LabelStyle से आते हैं)।

🟢 · पैकेज: dev.crossfly.ui · विस्तारित करता है: Component · स्टाइल: LabelStyle

कब उपयोग करें

  • शीर्षक, उपशीर्षक, कैप्शन और read-only मान।
  • बाईं या दाईं ओर सूचनात्मक आइकन के साथ पाठ।
  • पाठ के ब्लॉक जिन्हें कई पंक्तियों में विभाजित होना चाहिए।

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

  • संपादन योग्य पाठ → TextField / TextArea का उपयोग करें।
  • स्पर्श करने योग्य / क्लिक करने योग्य तत्व → Button का उपयोग करें (Label स्पर्श पर प्रतिक्रिया नहीं देता)।

दिखावट

पाठ आंतरिक क्षेत्र (ingap के बाद) के भीतर रेंडर होता है, LabelStyle.textAlignH/textAlignV के अनुसार क्षैतिज और ऊर्ध्वाधर रूप से संरेखित। बायां आइकन आंतरिक बाएं किनारे से सटा रहता है; दायां आंतरिक दाएं किनारे से; पाठ उनके बीच का स्थान घेरता है।

``

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

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 जो बटन द्वारा अपडेट किया जाएगा
      Label saida = new Label("Toque no botão abaixo");
      add(LAY_AUTO, saida);

      // बटन जो Label का टेक्स्ट बदलता है (Label.setText फ्लुएंट है और Label लौटाता है)
      Button ola = new Button("Dizer olá").onAction(c -> saida.setText("Olá, mundo!"));
      add(LAY_AUTO, ola);
   }
}

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

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

Label hello = new Label("Olá, mundo!");
container.add(LAY_AUTO, hello);

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
Label() खाली label (text = "")
Label(String text) पाठ label
Label(Icon onlIcon) केवल-आइकन label (बाईं ओर आइकन)

गुण और अनुकूलन

गुण / मेथड प्रकार डिफ़ॉल्ट क्या करता है
setText(String) Label (फ्लुएंट) — पाठ बदलता है; केवल तभी लेआउट अमान्य करता है जब मान बदला हो
leftIcon(Icon) Label (फ्लुएंट) null पाठ के बाईं ओर आइकन परिभाषित करता है
rightIcon(Icon) Label (फ्लुएंट) null पाठ के दाईं ओर आइकन परिभाषित करता है
text String (सार्वजनिक फ़ील्ड) "" वर्तमान सामग्री (\n हो सकता है)
स्टाइल .textAlign(Position, Position) Position थीम पाठ का क्षैतिज/ऊर्ध्वाधर संरेखण
स्टाइल .backColor(int) / .borderColor(int) ARGB थीम पृष्ठभूमि/बॉर्डर (पारदर्शी के लिए 0 का उपयोग करें)
getAutoWidth() / getAutoHeight(int) int — पसंदीदा आकार (लेआउट द्वारा उपयोग किए जाते हैं)
Label.wordWrap(String, Font, int) (static) String[] — चौड़ाई के अनुसार पंक्ति विच्छेदन की उपयोगिता

setText(String) Label लौटाता है (फ्लुएंसी के लिए), void नहीं — इसीलिए Label, setText/text उजागर करने के बावजूद, implements TextComponent घोषित नहीं करता।

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

कोई नहीं। Label गैर-इंटरैक्टिव है — यह न तो onAction न ही स्पर्श इवेंट चलाता है।

अवस्थाएं

कोई इंटरैक्शन अवस्था नहीं (pressed/focused नहीं है)। दृश्य केवल लागू स्टाइल के साथ या setEnabled(false) के माध्यम से बदलता है (Design के अनुसार अक्षम दिखावट)।

बाईं ओर आइकन और बिना पृष्ठभूमि वाला उपशीर्षक

// बाईं ओर आइकन वाला Label (Material "info")
Label info = new Label("Informação")
   .leftIcon(new MaterialIcon(""));
container.add(LAY_AUTO, info);

// बाईं ओर संरेखित उपशीर्षक, बिना बैकग्राउंड/बॉर्डर
Label sub = new Label("Lista:").style(
   Styles.theme().label(LabelRole.SUBTITLE)
      .backColor(0)
      .borderColor(0)
      .textAlign(Position.START, Position.CENTER));
container.add(LAY_AUTO, sub);

बहु-पंक्ति (word-wrap + स्पष्ट \n)

// स्पष्ट लाइन-ब्रेक
Label endereco = new Label("Rua das Flores, 123\nCentro\n01000-000");

// स्वचालित Word-wrap: ब्रेक होने के लिए Label को चौड़ाई दें (LAY_FILL)
Label paragrafo = new Label(
   "Este texto longo quebra automaticamente em várias linhas quando "
 + "a largura disponível é menor que a largura do texto.");
container.add(LAY_FILL, paragrafo);

सर्वोत्तम प्रथाएं

  • word-wrap के लिए, सुनिश्चित करें कि लेआउट Label को चौड़ाई दे (जैसे VerticalLayout में add(LAY_FILL, label))। ज्ञात चौड़ाई के बिना, ऊंचाई में केवल स्पष्ट \n गिने जाते हैं।
  • फ़ॉन्ट/रंग हार्ड-कोड करने के बजाय थीम की भूमिकाओं (LabelRole.TITLE/SUBTITLE/…) का उपयोग करें।

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

  • परिभाषित चौड़ाई के बिना word-wrap की अपेक्षा करना: यदि ऊंचाई गणना में चौड़ाई 0/अज्ञात है, तो केवल स्पष्ट \n विच्छेद गिने जाते हैं। Label को चौड़ाई दें।
  • setText को TextComponent.setText अनुबंध के साथ भ्रमित करना: यहां setText Label लौटाता है, void नहीं; Label TextComponent को कार्यान्वित नहीं करता।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपीज़: cookbook/
  • अवधारणा (“सब कुछ Component है”): concepts/
  • संबंधित कॉम्पोनेंट: Button · TextField · ImageView
क्या यह पृष्ठ उपयोगी था?