如何从列表视图中选择多个项目 – JavaFX 8

我是使用JavaFX新手,我正在尝试将ObservableList添加到表视图中。 该列表仅包含String。

我的目标是显示已连接设备的列表,并让用户选择执行操作(1或更多),有没有更好的方法来实现这一目标?

编辑:我已经链接到ListView,现在它显示列表,如何从所选项目创建新列表?

这是基于您的评论的示例

 import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class ListSelect extends Application { @Override public void start(Stage stage) { ObservableList items = FXCollections.observableArrayList( "one","two","three","four","five","six","seven"); ListView list = new ListView<>(items); ListView selected = new ListView<>(); HBox root = new HBox(list, selected); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); //set this to SINGLE to allow selecting just one item list.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); list.getSelectionModel().selectedItemProperty().addListener((obs,ov,nv)->{ selected.setItems(list.getSelectionModel().getSelectedItems()); }); } public static void main(String[] args) {launch(args);} } 

如果您正在寻找一种不使用Java新Lamba及其相关function的解决方案,那么它是:

在我的例子中,假设表被设置为使用任意类Person,它定义了名字,姓氏和电子邮件。

 //Set the table to multi selection mode table.getSelectionModel().setSelectionMode( SelectionMode.MULTIPLE); //Regiseter the listener on the ObervableList table.getSelectionModel().getSelectedItems().addListener(multiSelection); /**A listener for list selections, multiple selections in the TableView**/ ListChangeListener< Person> multiSelection = new ListChangeListener(){ @Override public void onChanged( ListChangeListener.Change changed){ for( Person p : changed.getList()) System.out.println(p); } };