JavaFXPorts:这是Android设备上的javafx.scene.control.ComboBox的正确行为吗?

时间:2016-11-02 06:37:58

标签: android javafx javafxports

在ComboBox中选择项目后,此选定项目不会显示在ComboBox中 - 仅限Android设备,在桌面上即可。 比较这两个截图:

[选择项目“选项2”时在桌面上]

enter image description here

[在Android设备上选择项目“选项2”时]

enter image description here

我正在使用JavaFXPorts 8.60.8。

2 个答案:

答案 0 :(得分:0)

根据此question,并在您bug report上提及您使用的是三星设备,在某些三星设备中存在一个已知问题,即JavaFXPorts中的触摸事件处理无法解决问题像在其他Android设备中一样工作。

虽然这是对JavaFXPorts的修复,但您可以尝试以下解决方法:

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);
        }

    });

注意我使用了鼠标按下事件处理程序而不是鼠标单击事件处理程序。由于我无法重现它,在我的情况下,鼠标单击由列表选择事件消耗(因为这可以正常工作),但在您的情况下,您可以使用按下或单击的事件。

答案 1 :(得分:0)

根据Josés的回答,我已经实现了以下通用助手功能,这可能会对你们中的一些人有所帮助:

import teamcity
from teamcity.unittestpy import TeamcityTestRunner

if __name__ == '__main__':
    if teamcity.is_running_under_teamcity():
        runner = TeamcityTestRunner()
    else:
        runner = unittest.TextTestRunner()

    unittest.main(testRunner=runner)
Btw:我的所有手机上都有这个错误(Samsung Note 3,Sony XPERIA Z3 Compact和Nexus 4)