我有一个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
值不会更改。那么有什么方法可以解决这个问题吗?提前谢谢。