我有一个简单的vbox,它将有六个hbox,我可以删除一个/所有并再次添加。
我的代码:
@FXML
private VBox userSelectedValues;
int index = userSelectedValues.getChildren().indexOf(event.getSource());
userSelectedValues.getChildren().remove(cnt);
ObservableList<Node> hboxNodes = FXCollections.observableArrayList();
hboxNodes.addAll(userSelectedValues.getChildren());
userSelectedValues.getChildren().clear();
userSelectedValues.getChildren().addAll(hboxNodes);
场景:最初有六个元素
1)我删除了第4个元素 - 工作正常 - 现在总共5个元素
2)我删除了第3个元素 - 工作正常 - 现在总共4个元素
3)现在,如果我想删除第6个元素,则会给我一个期望的indexOutOfBoutnd。
所以如何重新生成或刷新索引。
谢谢,
答案 0 :(得分:0)
“刷新”索引是什么意思?孩子们在ObservableList中。如果删除项目,则索引会更改。
示例:
Original:
Label1: 0
Label2: 1
Label3: 2
Modified:
Label1: 0
Label2: -1
Label3: 1
第二项被删除,控制台输出符合预期:
div {
margin: 50px;
height: 50px;
min-width: 100px;
background: lightgray;
position: relative;
display: inline-block;
border-top: 5px solid gold;
border-bottom: 5px solid gold;
padding-left: 30px;
padding-right: 30px;
line-height: 50px;
cursor:pointer;
}
div:before,
div:after {
content: "";
position: absolute;
top: -5px;
height: 37px;
width: 37px;
background: inherit;
transform: rotate(45deg);
transform-origin: top left;
}
div:before {
left: 0;
border-left: 5px solid gold;
border-bottom: 5px solid gold;
}
div:after {
left: 100%;
border-top: 5px solid gold;
border-right: 5px solid gold;
}
/*demo only*/
html {background: #222;}
根据indexOf的文档:
返回指定元素第一次出现的索引 此列表,如果此列表不包含该元素,则返回-1。