java - जावाएफ़एक्स दिनांकपेकर से कैलेंडर-पॉपअप निकालें/केवल पॉपअप दिखाएं




javafx datepicker (2)

मैं जावाएफ़एक्स आवेदन के लिए एक कैलेंडर व्यू बनाने की कोशिश कर रहा हूं, केवल तिथियों को प्रदर्शित करने के लिए (कोई भी चयन आवश्यक नहीं)। चूंकि DatePicker वर्ग के पास एक अच्छा कैलेंडर पॉपअप है, इसलिए मैंने सोचा कि मैं इसे निकालने का प्रयास कर सकता हूं ताकि मेरे पास पहले से ही सभी स्टाइल-सवालों को कवर किया जा सके।

तो क्या DatePicker कैलेंडर पॉपअप निकालने और इसे एक नया कैलेंडरदृश्य में डालने का एक आसान तरीका है?

मैंने ComboBoxBase क्लास के show() विधि से पहले ही देखा है कि पॉपअप शुरू होने पर वास्तव में क्या होता है लेकिन मुझे यह स्वीकार करना होगा कि मैं वास्तव में इसके आसपास अपना सिर नहीं पा सके।

वैकल्पिक रूप से मैं केवल DatePicker को उस तरीके से संपादित करने के बारे में सोच सकता हूं, जो केवल पॉपअप हमेशा संपादक-टेक्स्टफिल्ड और बटन घटक के साथ हर समय दिखाता है, लेकिन फिर से मैं यह भी नहीं समझा सकता कि पॉपअप को छुपाए बिना कैसे करना है । इसके अलावा मुझे इस वैकल्पिक व्यवस्था में ऊँचाई और चौड़ाई को व्यवस्थित करने के लिए पॉपअप की सीमा प्राप्त करने की आवश्यकता होगी, जो फिर से ऐसा आसान नहीं लगता है।


आप DatePickerSkin से एक DatePicker की पॉपअप सामग्री प्राप्त कर सकते हैं। कार्यान्वयन के लिए यह डेमो देखें:

public class DatePickerPopupDemo extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root, 400, 400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());

            DatePickerSkin datePickerSkin = new DatePickerSkin(new DatePicker(LocalDate.now()));
            Node popupContent = datePickerSkin.getPopupContent();

            root.setCenter(popupContent);

            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

यदि शीर्ष बार की आवश्यकता नहीं है, तो आप इसे देख सकते हैं और इसे छुप सकते हैं।

DatePickerSkin datePickerSkin = new DatePickerSkin(new DatePicker(LocalDate.now()));
Node popupContent = datePickerSkin.getPopupContent();

// force a css layout pass to ensure that lookup calls work
popupContent.applyCss();
popupContent.lookup(".month-year-pane").setVisible(false);

root.setCenter(popupContent);


"महीने-वर्ष-फलक" का उपयोग करने के लिए:

DatePickerSkin datePickerSkin = new DatePickerSkin(date_picker);
Node popupContent = datePickerSkin.getPopupContent();
((DatePickerContent) popupContent).getChildren().remove(popupContent.lookup(".month-year-pane"));