यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
DatePicker
DatePicker एक मासिक कैलेंडर में तारीख चुनता है, महीने और वर्ष के नेविगेशन तथा महीने/वर्ष के त्वरित चयन ग्रिड के साथ। यह पिकर पैटर्न का अनुसरण करता है: बंद होने पर show(onAnswer) द्वारा उपभोग किए गए getAnswer() के माध्यम से मान लौटाता है (देखें Picker)।
🟡 · पैकेज:
dev.crossfly.ui.picker· विस्तार करता है:Picker· शैली:DatePickerStyle
कब उपयोग करें
- कैलेंडर UI के साथ एक तारीख एकत्र करना (जन्मदिन, शेड्यूलिंग, नियत तिथि)।
कब उपयोग न करें
- समय एकत्र करना →
TimePickerका उपयोग करें।
दिखावट
शीर्षक पट्टी, महीने की पंक्ति (< Nome >), वर्ष की पंक्ति (< 2026 >) और दिनों की 6×7 कोशिकाओं की एक ग्रिड वाला कार्ड। इसका आकार Screen.minSize के ~90% पर होता है।
संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Button abrir = new Button("Escolher data");
abrir.onAction(c ->
{
DatePicker dp = new DatePicker().title("Data de nascimento");
dp.show(answer -> Hint.show("Data: " + (String) answer, 2000));
});
add(LAY_AUTO, abrir);
}
}
नीचे दिए गए स्निपेट केवल मूल भाग दिखाते हैं (जो
onShow()के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर दिएMainWindowकंकाल में रखें।
बुनियादी उपयोग
DatePicker dp = new DatePicker();
dp.show(answer -> campoData.setText((String) answer));
कंस्ट्रक्टर
| कंस्ट्रक्टर | विवरण |
|---|---|
DatePicker() |
बिना पैरामीटर; आज की तारीख से शुरू होता है। |
गुण और अनुकूलन (fluent)
| मेथड | प्रकार | डिफ़ॉल्ट | क्या करता है |
|---|---|---|---|
setDate(int year, int month, int day) |
वर्ष, महीना 0-आधारित, दिन 1-आधारित | आज | तारीख पूर्व-चयनित करता है। |
title(String) |
String |
"Date Picker" |
शीर्षक पट्टी का टेक्स्ट। |
yearRange(int before, int after) |
int, int |
30, 10 | वर्ष ग्रिड के लिए पहले/बाद के वर्ष। |
style(DatePickerStyle) |
शैली | skin | कस्टम शैली। |
getSelectedDay() |
int |
— | चयनित दिन (1-आधारित)। |
getDisplayYear() / getDisplayMonth() |
int |
— | प्रदर्शित वर्ष / महीना (महीना 0-आधारित)। |
कॉलबैक और इवेंट
| कॉलबैक | कब ट्रिगर होता है |
|---|---|
onSelect(Action) |
किसी दिन को टैप करने पर (स्वयं DatePicker प्राप्त करता है)। |
show(onAnswer) |
बंद होने पर, तारीख की String देता है (यदि पुष्टि की गई हो)। |
getAnswer() तारीख को DateTimeUtils.formatDate के फ़ॉर्मेट में लौटाता है — क्रम (DMY/MDY/YMD) और विभाजक LocaleFormats पर निर्भर करते हैं, यह निश्चित dd/MM/yyyy नहीं है।
अवस्थाएँ
- महीनों के बीच नेविगेट करने से
selectedDay-1पर रीसेट हो जाता है (जब तक उपयोगकर्ता न चुने, कोई दिन चिह्नित नहीं होता)। - अवस्था के अनुसार शैलियाँ: आज, चयनित, अन्य महीना, सामान्य (
DatePickerStyleके माध्यम से)।
जन्मतिथि
DatePicker dp = new DatePicker()
.title("Data de nascimento")
.yearRange(100, 0) // 100 साल पहले तक, भविष्य में कोई नहीं
.setDate(2000, 0, 1); // 01/Jan/2000 (महीना 0-based!)
dp.onSelect(p ->
{
DatePicker d = (DatePicker) p;
Debug.log("dia=" + d.getSelectedDay() + " mes=" + (d.getDisplayMonth() + 1));
});
dp.show(answer ->
{
String data = (String) answer; // उदा.: LocaleFormats के अनुसार "01/01/2000"
campoData.setText(data);
});
अच्छे तरीके
- याद रखें कि
setDateमेंmonth0-आधारित है। - महीनों/दिनों के नामों को स्थानीयकृत करने के लिए, सार्वजनिक स्थिरांक
MONTH_NAMES/MONTH_SHORTको फिर से असाइन करें।
सामान्य गलतियाँ
setDateमें 1-आधारित महीना पास करना — जनवरी0है।- निश्चित फ़ॉर्मेट की अपेक्षा करना — आउटपुट
LocaleFormats.dateFormat/dateSeparatorका अनुसरण करता है। yearRangeको चयन के clamp के रूप में समझना — यह केवल वर्षों के नेविगेशन को सीमित करता है; प्रदर्शित महीने का कोई भी दिन चयन योग्य है।
यह भी देखें
- क्षेत्र गाइड:
ui/· रेसिपी:cookbook/ - पैटर्न का आधार:
Picker - संबंधित घटक:
TimePicker