如何找出是否在JavaFX中显示ComboBox项目

时间:2018-01-20 13:39:54

标签: javafx combobox

我有一个ComboBox和一个ImageView,我的目标是在用户点击ImageView时将ComboBox推低,因为ComboBox项翻过ImageView并隐藏它。但ImageView必须可见。这是part of my program的图片。

以下是我的代码的一部分:

        yourTeamFormation.setCellFactory((Object lv) -> {
        ListCell<String> cell = new ListCell<String>() {
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                setText(item);
            }
        };
        cell.hoverProperty().addListener((obs, wasHovered, isNowHovered) -> {
            if (cell.isEmpty()) {
                yFormationDis.setImage(null);
            } else {
                yFormationDis.setImage(getImage(cell.getItem()));
                yFormationDis.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
            }
        });
        return cell ;
    });
    yourTeamFormation.valueProperty().addListener(new ChangeListener <String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            if(yFormationDis.getLayoutY() == 148)
                yFormationDis.relocate(yFormationDis.getLayoutX() ,67);
            setFormation.setOpacity(100);
            try {
                in = new Scanner(new FileInputStream("playerFormation.txt"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String temp = newValue + "%";
            temp = temp.trim();
            while (in.hasNext()){
                String temp2 = in.next();

                if(temp2.contains("%")){
                    if(temp.equals(temp2)){
                        break;
                    }
                }
            }
            for(int  i = 0; i < XYNow.length ; i++){
                XYNow[i] = Double.parseDouble(in.next());
            }
            YourFormation = newValue;
        }
    });
    yourTeamFormation.setOnMouseClicked(event -> {
        setFormation.setOpacity(0);
        if(yFormationDis.getLayoutY() == 67)
            yFormationDis.setLayoutY(148);
    });

这几乎没问题,但有一个很大的错误:当用户点击ComboBox时,ImageView会被推低,但如果用户没有更改{{1}的值并关闭它(隐藏ComboBox个项目)ComboBox将不会返回到它的第一个位置,因为ImageView值不会更改。那么有什么方法可以解决这个问题吗?提前谢谢。

0 个答案:

没有答案