यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
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अनुबंध के साथ भ्रमित करना: यहांsetTextLabelलौटाता है,voidनहीं;LabelTextComponentको कार्यान्वित नहीं करता।