Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFXListView从两个列表中选择项目_Java_Javafx_Java 8_Javafx 8_User Input - Fatal编程技术网

JavaFXListView从两个列表中选择项目

JavaFXListView从两个列表中选择项目,java,javafx,java-8,javafx-8,user-input,Java,Javafx,Java 8,Javafx 8,User Input,使用一个ListView,可以从中选择多个项目,行为: listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); 然后使用以下方法检索所选项目: selectedItems = listView.getSelectionModel().getSelectedItems(); 但是,我在一个窗口中有两个列表视图(listView和listView 2)。有没有办法在这两个列表中选择项目(通过用户按住Ctrl并

使用一个ListView,可以从中选择多个项目,行为:

listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
然后使用以下方法检索所选项目:

selectedItems =  listView.getSelectionModel().getSelectedItems();
但是,我在一个窗口中有两个列表视图(
listView
listView 2
)。有没有办法在这两个列表中选择项目(通过用户按住
Ctrl
并选择项目)

编辑以澄清: 例如,我希望能够选择项目1、4、5和6,然后按
Delete
。我可以按住Ctrl键,从列表1中选择4、5和6,然后从列表2中选择1。但是,如果我后来改变主意,实际上只想选择8,那么我释放
Ctrl
并选择8,那么
list2
中的所有内容都应该取消选择


您可以创建一个自定义实现,需要在两个列表之间共享该实现,并在其中实现选择约束


但是我怀疑你是否需要这样做,如果你有两个列表和两个选择模型,使用一些选择侦听器并查询这两个列表,我的印象是你已经拥有了你所需要的。

我最终只是创建了一个侦听器,这将检查当用户更改他们从中选择项目的列表时,是否按住了
Ctrl

boolean controlIsDepressed = false;

list1.getSelectionModel().selectedItemProperty().addListener(
    (observable) -> {
                Scene scene = list1.getScene();
                scene.setOnKeyPressed(e -> {
                    if (e.getCode() == KeyCode.CONTROL) {
                        controlIsDepressed = true;
                    }
                });
                scene.setOnKeyReleased(e -> {
                    if (e.getCode() == KeyCode.CONTROL) {
                        controlIsDepressed = false;
                    }
                });
                // Clear the other list if Ctrl is not being held down
                if (!controlIsDepressed) list2.getSelectionModel().clearSelection();
            });

然后类似于
list2

,这是默认行为。您将得到两个列表,而不是一个,但是将它们添加到一起应该不会有问题。