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

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

RandomLayout

कुछ भी स्वचालित रूप से व्यवस्थित नहीं करता: प्रत्येक बच्चे को bounds की आवश्यकता होती है। यह डिफ़ॉल्ट लेआउट है जब आप बिना लेआउट परिभाषित किए add(...) कॉल करते हैं। नाम के बावजूद, यह ओवरले और तैरते कार्ड का आधार है।

🔴 · पैकेज: dev.crossfly.ui.layout · विस्तार करता है: Layout

कब उपयोग करें

  • ओवरले, तैरते कार्ड, मुक्त स्थिति।
  • कस्टम लेआउट जहाँ आप bounds को नियंत्रित करते हैं।

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

  • सामान्य स्क्रीन → व्यवस्थित करने वाले लेआउट का उपयोग करें (Vertical/Horizontal/Grid)।

add(...)

public Layout add(Object... params);   // सिर्फ कॉम्पोनेंट एकत्र करता है; उन्हें स्थान नहीं देता

स्थिति निर्धारित करने के दो तरीके

  1. मैनुअल (पिक्सेल — उत्तरदायी नहीं): filho.setBounds(x, y, w, h)।
  2. सापेक्ष (उत्तरदायी — अनुशंसित): filho.setRelativeBounds(Relative x, Relative y, Relative w, Relative h)। RandomLayout का doLayout() सापेक्ष bounds वाले प्रत्येक बच्चे के लिए Relative.setBounds(c) को स्वचालित रूप से कॉल करता है।

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

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.graphics.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();

      // खुद Window डिफ़ॉल्ट रूप से RandomLayout उपयोग करती है (बिना setLayout)
      Component card = new Component();
      card.setLayout(new VerticalLayout(Position.START, Position.START));
      card.add(LAY_AUTO, new Label("Cartão flutuante"));
      card.setRelativeBounds(
         Relative.CENTER,                            // x: केंद्रित
         Relative.CENTER,                            // y: केंद्रित
         Relative.ofScreen(0.8f, ScreenSize.MIN),   // चौड़ाई: छोटी भुजा का 80%
         Relative.ofFont(10f)                       // ऊंचाई: फॉन्ट की 10 पंक्तियां
      );
      add(card);                                     // RandomLayout सापेक्ष bounds हल करता है
   }
}

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

बुनियादी उपयोग (उत्तरदायी केंद्रित कार्ड)

Component overlay = new Component();          // बिना setLayout → RandomLayout
Component card = new Component();
card.setRelativeBounds(
   Relative.CENTER,                            // x: केंद्रित
   Relative.CENTER,                            // y: केंद्रित
   Relative.ofScreen(0.8f, ScreenSize.MIN),   // चौड़ाई: छोटी भुजा का 80%
   Relative.ofFont(10f)                       // ऊंचाई: फॉन्ट की 10 पंक्तियां
);
overlay.add(card);                             // RandomLayout सापेक्ष bounds हल करता है

अच्छी प्रथाएँ

  • setBounds की तुलना में setRelativeBounds को प्राथमिकता दें — उत्तरदायित्व बनाए रखता है।
  • यदि आपको निश्चित setBounds की आवश्यकता हो, तो Window.onReposition() में पुनर्गणना करें (resize पर कॉल किया जाता है)।

सामान्य त्रुटियाँ

  • निश्चित setBounds(x,y,w,h) का उपयोग करना और दूसरी स्क्रीन/घनत्व पर UI का टूटना।
  • यह भूल जाना कि bounds के बिना (न निश्चित, न सापेक्ष) बच्चा (0,0) पर 0 आकार के साथ रहता है।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?