का चयन एक विशिष्ट मूल्य सूची से जावा

0

सवाल

मैं कोशिश कर रहा हूँ बनाने के लिए एक समय-निर्धारण कार्यक्रम, जहां मैं अद्यतन कर सकते हैं ग्राहक नियुक्ति के समय. मैं करने में सक्षम हूँ, बचाने के लिए और नियुक्तियों लेकिन उन्हें अद्यतन किया गया है एक सा भ्रामक है ।

मैं 2 सूचियों के लिए घंटे और मिनट है कि मैं कर रहा हूँ में डाल comboboxes के रूप में नीचे दिखाया गया है.

ObservableList hoursList = FXCollections.observableArrayList();
    hoursList.add("08");
    hoursList.add("09");
    hoursList.add("10");
    hoursList.add("11");
    hoursList.add("12");
    hoursList.add("13");
    hoursList.add("14");
    hoursList.add("15");
    hoursList.add("16");
    hoursList.add("17");
    hoursList.add("18");
    hoursList.add("19");
    hoursList.add("20");
    hoursList.add("21");
    hoursList.add("22");
    updateAppointmentStartTimeHourComboBox.setItems(hoursList);
    updateAppointmentEndTimeHourComboBox.setItems(hoursList);

    ObservableList minList = FXCollections.observableArrayList();
    minList.add("00");
    minList.add("15");
    minList.add("30");
    minList.add("45");
    updateAppointmentStartTimeMinComboBox.setItems(minList);
    updateAppointmentEndTimeMinComboBox.setItems(minList);

मेरा मुद्दा यह है जब मैं कोशिश कर रहा हूँ करने के लिए prepopulate स्क्रीन, मैं नहीं मिल सकता है के मूल्य के घंटे या मिनट आबाद करने के लिए तदनुसार.

मैं कर रहा हूँ प्राप्त करने में सक्षम LocalDateTime मेरी नियुक्ति से यहाँ के रूप में दिखाया

LocalDateTime ldt = appointment.getStartDate().toLocalDateTime();
    LocalDate ld = ldt.toLocalDate();
    UpdateAppointmentDatePicker.setValue(ld);

    String tempStartHour = String.valueOf(ldt.getHour());
    updateAppointmentStartTimeHourComboBox.getSelectionModel().select(equals(tempStartHour));

लेकिन मैं नहीं मिल सकता कॉम्बो बॉक्स का चयन करने के लिए उचित मूल्य और प्रदर्शन ।

अगर मैं tempStartHour = "11" कैसे कर सकते हैं मैं अपने combobox का चयन करने के लिए और प्रदर्शन "11" सूची से

combobox java list
2021-11-22 16:35:47
2
0

String.valueOf(ldt.getHour())

आप कर रहे हैं एक स्ट्रिंग के घंटे की संख्या. डिफ़ॉल्ट रूप से, परिणाम है कोई शून्य के बाईं करने के लिए सबसे महत्वपूर्ण अंक.

तो आप की कोशिश है कि मैच के लिए unpadded स्ट्रिंग के खिलाफ तार जहां 08 और 09 गुदगुदा रहे हैं एक शून्य के साथ.

यह तय करके गद्दी अपने निकाले घंटे.

अपने कोड है अन्य समस्याओं. एक के लिए, आप की जरूरत है लेने के लिए एक डिफ़ॉल्ट घंटे के लिए जब इनपुट नहीं है के भीतर अपने 8-22 रेंज. किसी अन्य के लिए, अपने अंतिम पंक्ति में विफल रहता है, वाक्य रचना, जहाँ आप पारित नहीं कर सकते equals(tempStartHour) एक तर्क के रूप में.

टिप: एक शुरुआत के रूप में, बाहर की तलाश में अन्य कोड के उदाहरण का अध्ययन करने के लिए.

2021-11-22 17:19:18
0

मान लें आप पहले से ही है LocalDate, लेकिन आप केवल करने की जरूरत है परिवर्तित करने के लिए LocalDateTime के मूल्यों का उपयोग कर ComboBox, आप का उपयोग कर सकते हैं ComboBox<Number> के बजाय ComboBox<String>है , और एक NumberStringConverter एक उपसर्ग जोड़ने के लिए 0 के लिए एकल-अंक घंटे या मिनट (08:00 के बजाय 8:0).

public class App extends Application {

    @Override
    public void start(Stage stage) {

        LocalDate date = LocalDate.now();

        ComboBox<Number> cbHourStart = new ComboBox<>();
        ComboBox<Number> cbHourEnd = new ComboBox<>();

        ComboBox<Number> cbMinuteStart = new ComboBox<>();
        ComboBox<Number> cbMinuteEnd = new ComboBox<>();

        NumberStringConverter converter = new NumberStringConverter("00");

        cbHourStart.setConverter(converter);
        cbHourEnd.setConverter(converter);
        cbMinuteStart.setConverter(converter);
        cbMinuteEnd.setConverter(converter);

        IntStream.rangeClosed(8, 22).forEach(cbHourStart.getItems()::add);
        IntStream.rangeClosed(8, 22).forEach(cbHourEnd.getItems()::add);

        IntStream.iterate(0, i -> i + 15).limit(4).forEach(cbMinuteStart.getItems()::add);
        IntStream.iterate(0, i -> i + 15).limit(4).forEach(cbMinuteEnd.getItems()::add);

        cbHourStart.getSelectionModel().select(0);
        cbHourEnd.getSelectionModel().select(0);

        cbMinuteStart.getSelectionModel().select(0);
        cbMinuteEnd.getSelectionModel().select(0);

        ObjectProperty<LocalTime> startTime = new SimpleObjectProperty<>();
        ObjectProperty<LocalTime> endTime = new SimpleObjectProperty<>();

        cbHourStart.getSelectionModel().selectedItemProperty()
                .addListener((obs, oldVal, newVal) -> startTime.setValue(
                        LocalTime.of(newVal.intValue(), 
                                cbMinuteStart.getSelectionModel().getSelectedItem().intValue())));

        cbMinuteStart.getSelectionModel().selectedItemProperty()
                .addListener((obs, oldVal, newVal) -> startTime.setValue(
                        LocalTime.of(cbHourStart.getSelectionModel().getSelectedItem().intValue(), 
                                newVal.intValue())));   

        cbHourEnd.getSelectionModel().selectedItemProperty()
                .addListener((obs, oldVal, newVal) -> endTime.setValue(
                        LocalTime.of(newVal.intValue(), 
                                cbMinuteEnd.getSelectionModel().getSelectedItem().intValue())));

        cbMinuteEnd.getSelectionModel().selectedItemProperty()
                .addListener((obs, oldVal, newVal) -> endTime.setValue(
                        LocalTime.of(cbHourEnd.getSelectionModel().getSelectedItem().intValue(), 
                                newVal.intValue())));

        startTime.addListener((obs, oldVal, newVal) -> 
                System.out.println("Start time: " + date.atTime(newVal)));

        endTime.addListener((obs, oldVal, newVal) -> 
                System.out.println("End time: " + date.atTime(newVal)));
    
        HBox hbStart = new HBox(5, cbHourStart, new Label(":"), cbMinuteStart);
        HBox hbEnd = new HBox(5, cbHourEnd, new Label(":"), cbMinuteEnd);

        VBox pane = new VBox(20, hbStart, hbEnd); 

        Scene scene = new Scene(new StackPane(pane));

        stage.setScene(scene);
        stage.show();

    }

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

}

ध्यान दें:

उदाहरण सरल किया जा सकता का उपयोग कर binding जोड़ने के बजाय परिवर्तन श्रोताओं. हालांकि, वे ताजा कर रहे हैं lazily तो आप की आवश्यकता होगी करने के लिए जोड़ बदलने श्रोताओं गुणों के लिए मजबूर करने के लिए एक पुनर्गणना के मूल्यों.

यदि आप कर रहे हैं पहले से ही का उपयोग कर श्रोताओं गुणों के लिए, आप कर सकते हैं सभी जगह परिवर्तन के श्रोताओं के पिछले उदाहरण के साथ:

startTime.bind(Bindings.createObjectBinding(() -> 
        LocalTime.of(
                cbHourStart.getSelectionModel().getSelectedItem().intValue(),
                cbMinuteStart.getSelectionModel().getSelectedItem().intValue()), 
        cbHourStart.getSelectionModel().selectedItemProperty(), 
        cbMinuteStart.getSelectionModel().selectedItemProperty()));

endTime.bind(Bindings.createObjectBinding(() -> 
        LocalTime.of(
                cbHourEnd.getSelectionModel().getSelectedItem().intValue(),
                cbMinuteEnd.getSelectionModel().getSelectedItem().intValue()), 
        cbHourEnd.getSelectionModel().selectedItemProperty(), 
        cbMinuteEnd.getSelectionModel().selectedItemProperty()));
2021-11-22 17:13:29

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में