我很抱歉这个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 。我要么搞乱了那里的事件,要么我完全错了。