JavaFX - 将行从一个TableView拖放到另一个TableView

时间:2014-03-20 11:27:27

标签: java events drag-and-drop javafx tableview

我很抱歉这个noob问题,但我的头脑正在阅读各种代码和书籍样本,我仍然不知道如何做到这一点。

我已经制作了 FXML 应用并添加了 TableViews ,来源( MainDB )和目标(table1,2,3) 。 MainDB 从数据库加载内容。我想将 MainDB 中的数据行拖拽到table1。

我的简单思想认为我应该在Controller类中做的是: a)当 OnDragDetected MainDB ,将行存储在temp var中

temp = source.getSelectionModel().getSelectedItem();

b)在 OnDragDropped 时的目标上,在ObservableList中添加temp,然后将其添加到目标。

我的控制器中的代码是:

@FXML
private void copyFromSource(MouseEvent event) {

    mainDB.setOnDragDetected(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent event) {
            System.out.println("Copying works");
            temp = new Item(mainDB.getSelectionModel().getSelectedItem());
        }
    });
}

@FXML
private void addToTarget(MouseDragEvent event) {

    table1.setOnDragDropped(new EventHandler<DragEvent>() {

        @Override
        public void handle(DragEvent event) {
            tempList.add(temp);
            table1.setItems(toCopyList);
            toCopyList.clear();
        }
    });
}

我仍然在努力理解我应该如何构建代码, JavaFX FXML 中的 MVC 对我来说有点棘手。事件变得更加棘手,我现在真的很困惑。

编辑:我设法触发第一个事件,调用 copyFromSource 并触发事件。但不是 addToTarget 。我要么搞乱了那里的事件,要么我完全错了。

0 个答案:

没有答案