JavaFXPorts: Is this correct behavior for javafx.scene.control.ComboBox on Android device?

后端 未结 2 2071
有刺的猬
有刺的猬 2021-01-27 17:17

After selecting item in ComboBox, then this selected item is not displayed in ComboBox - only Android device, on desktop is it ok. Compare this two screenshots:


[O

相关标签:
2条回答
  • 2021-01-27 17:25

    Based on this question, and giving that on your bug report you mention you are using a Samsung device, there is a known issue in some Samsung devices where the touch event handling done in JavaFXPorts doesn't work as in the rest of Android devices.

    While this is fix on JavaFXPorts, you can try the following workaround:

    comboBox.setCellFactory(p -> new ListCell<String>() {
    
            private String item;
            {
                setOnMousePressed(e -> comboBox.getSelectionModel().select(item));
            }
    
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty); 
                this.item = item;
                setText(item);
            }
    
        });
    

    Note I've used a mouse pressed event handler instead of a mouse clicked event handler. Since I can't reproduce it, in my case the mouse click is consumed by the list selection event (as this works properly), but probably in your case you can use either pressed or clicked events.

    0 讨论(0)
  • 2021-01-27 17:36

    Based on Josés answer I've implemented the following generic Helper function, which might help some of you:

    public static <T> void removeSelectionBug(ComboBox<T> comboBox) {
        comboBox.setCellFactory(p -> new ListCell<T>() {
            private T item;
            {
                setOnMousePressed(e -> comboBox.getSelectionModel().select(item));
            }
    
    
            @Override
            protected void updateItem(T item, boolean empty) {
                super.updateItem(item, empty);
                this.item = item;
                if (item != null) {
                    setText(item.toString());
                }
            }
        });
    }
    

    Btw: I've got this bug on all of my Mobiles(Samsung Note 3, Sony XPERIA Z3 Compact and Nexus 4)

    0 讨论(0)
提交回复
热议问题