【发布时间】:2016-10-28 06:33:58
【问题描述】:
我正在学习JavaFX ListView 我想知道为什么当我选择listViewLeft 的项目时listViewRight 的项目会自动更新?
FXML 代码:
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.control.ListView ?>
<?import javafx.scene.control.Label ?>
<?import javafx.scene.control.SelectionMode ?>
<?import javafx.scene.control.MultipleSelectionModel ?>
<?import javafx.scene.control.CheckBox ?>
<?import javafx.collections.FXCollections ?>
<?import java.lang.String ?>
<BorderPane prefWidth="600" prefHeight="250" xmlns:fx="http://javafx.com/fxml" fx:controller="ListViewController">
<left>
<ListView fx:id="listViewLeft" editable="true">
<items>
<FXCollections fx:id="collection" fx:factory="observableArrayList">
<String fx:value="Good" />
<String fx:value="Bad" />
<String fx:value="Average" />
</FXCollections>
</items>
</ListView>
</left>
<right>
<ListView fx:id="listViewRight" />
</right>
</BorderPane>
控制器代码:
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.CheckBox;
import javafx.scene.control.SelectionMode;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.beans.value.ObservableValue;
import javafx.beans.value.ChangeListener;
public class ListViewController{
@FXML private ListView<String> listViewLeft;
@FXML private ObservableList<String> collections;
@FXML private CheckBox newItem;
@FXML private ListView<String> listViewRight;
public void initialize(){
collections = listViewLeft.getItems();
listViewLeft.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
listViewRight.setItems(listViewLeft.getSelectionModel().getSelectedItems());
}
}
当我从listViewLeft 中选择项目时,该项目会自动显示在listViewRight 中,为什么?我刚刚打电话给listViewLeft.getSelectionModel().getSelectedItems() 将所有选定的项目添加到listViewRight 为什么它binds 到listViewRight ?
【问题讨论】:
-
您想动态更改 listViewRight 项还是最初想将这些项设置为所有,在初始化期间,从 listViewLeft 中选择项b>?