यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
मोडल चयन पॉपअप कैसे दिखाएँ
उद्देश्य. किसी चयन सूची को फ्लोटिंग विंडो के रूप में खोलें (लेआउट में एम्बेडेड नहीं)।
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)— स्क्रीन के अंश के रूप में आकार (defaults0.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