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

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

मोडल चयन पॉपअप कैसे दिखाएँ

उद्देश्य. किसी चयन सूची को फ्लोटिंग विंडो के रूप में खोलें (लेआउट में एम्बेडेड नहीं)। ListViewWindow एक ListView को एक Window के अंदर लपेटता है, उसे स्क्रीन पर केंद्रित करता है और जब उपयोगकर्ता चयन करता है तब उसे स्वयं बंद कर देता है। यह सरल चयन और कस्टम दिखावट वाली पंक्तियों — दोनों के लिए काम करता है।

उपयोग की गई APIs

  • new ListViewWindow(String[] items, ListViewWindow.ItemType type) — पॉपअप बनाता है; String title वाला ओवरलोड भी उपलब्ध है।
  • ListViewWindow.ItemType.SINGLE / MULTIPLE — ListViewWindow का अपना enum (ListView.ItemType का उपनाम, जो आंतरिक रूप से toPanel() द्वारा परिवर्तित होता है)।
  • ListViewWindow.size(float widthRatio, float heightRatio) — स्क्रीन के अंश के रूप में आकार (defaults 0.5f, 0.5f); पॉपअप हमेशा केंद्रित रहता है।
  • ListViewWindow.onConfirm(Component.Action) — आंतरिक ListView को सौंपता है; SINGLE में पुष्टि करने पर विंडो closeAction(this::hide) के जरिए स्वयं बंद हो जाती है।
  • ListViewWindow.ItemFactory(ItemFactory factory) — ध्यान दें: मेथड बड़े अक्षर से शुरू होता है। इंटरफ़ेस है ItemFactory { Component create(String text, int index) throws Exception; }।
  • ListViewWindow.show() / hide() — Window से विरासत में मिले (EventsProcessor में स्टैक पर चढ़ाते/उतारते हैं)।
  • ListViewWindow.getSelectedText() / getSelectedIndex() / getSelectedTexts() — आंतरिक पैनल को सौंपे गए।
  • ListViewWindow.getPanel() — यदि उन्नत कॉन्फ़िगरेशन चाहिए तो अंतर्निहित ListView तक पहुँच।

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

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());

      final String[] paises = {"Brasil", "Portugal", "Angola", "Moçambique"};

      // ListViewWindow popup है: लेआउट में नहीं आता — एक Button द्वारा ट्रिगर किए गए show() से खुलता है
      Button abrir = new Button("Escolher país");
      abrir.onClick(e ->
      {
         ListViewWindow popup = new ListViewWindow("País", paises, ListViewWindow.ItemType.SINGLE);
         popup.size(.6f, .5f);                 // स्क्रीन की 60% चौड़ाई, 50% ऊँचाई
         popup.onConfirm(ev ->
         {
            String pais = popup.getSelectedText();   // विंडो SINGLE में स्वयं ही बंद हो जाती है
            Debug.log("País: " + pais);
            return null;
         });
         popup.show();                          // केंद्रित modal खोलता है
         return null;
      });

      add(LAY_AUTO, abrir);
   }
}

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

न्यूनतम अंश

// स्रोत में सत्यापित: ListViewWindow.java
String[] paises = {"Brasil", "Portugal", "Angola", "Moçambique"};

ListViewWindow popup = new ListViewWindow("País", paises, ListViewWindow.ItemType.SINGLE);
popup.size(.6f, .5f);                 // स्क्रीन की 60% चौड़ाई, 50% ऊँचाई
popup.onConfirm(e ->
{
   String pais = popup.getSelectedText();   // विंडो SINGLE में स्वयं ही बंद हो जाती है
   return null;
});
popup.show();                          // केंद्रित modal खोलता है

ItemFactory के साथ कस्टम पंक्तियाँ (मेथड के नाम में बड़े I पर ध्यान दें):

// स्रोत में सत्यापित: ListViewWindow.ItemFactory (interface) + ItemFactory(...) मेथड
ListViewWindow popup = new ListViewWindow("Contato", nomes, ListViewWindow.ItemType.SINGLE);
popup.ItemFactory((text, index) ->
{
   Component linha = new Component();
   linha.setLayout(new GridLayout());
   linha.add(new Label(text));                 // पंक्ति को जैसे चाहें बनाएँ
   return linha;
});
popup.onConfirm(e -> { /* ... */ return null; });
popup.show();

Javadoc × कोड में अंतर: क्लास के Javadoc में एक ListView पर sel.show() दिखाया गया है, परंतु show()/hide() Window में मौजूद हैं — इसलिए ये ListViewWindow में हैं, ListView में नहीं। पॉपअप मोड के लिए हमेशा ListViewWindow का उपयोग करें।

और गहराई में जाएँ

  • उसी सूची का एम्बेडेड (बिना विंडो वाला) संस्करण: lista-simples.md।
  • विजेट गाइड: ListViewWindow · आधिकारिक स्रोत: अध्याय 15
क्या यह पृष्ठ उपयोगी था?