gpt4 book ai didi

drag-and-drop - 在 JavaFX 表中拖放?

转载 作者:行者123 更新时间:2023-12-04 06:32:06 25 4
gpt4 key购买 nike

我正在为某种播放列表使用 JavaFX 2 表格,我希望能够拖放表格中的行,例如将第 3 行拖到第 2 行之前,就像您从典型媒体播放器的播放列表中知道的拖放内容一样,例如Winamp、AIMP...

这可能吗?任何代码示例吗?非常感谢!

最佳答案

试试这个:)

@FXML
TableView<String> tableView;
private ObservableList<String> tableContent = FXCollections.observableArrayList();

//...

tableView.setOnMouseClicked(new EventHandler<MouseEvent>() { //click
@Override
public void handle(MouseEvent event) {
if(event.getClickCount()==2){ // double click

String selected = tableView.getSelectionModel().getSelectedItem();
if(selected !=null){
System.out.println("select : "+selected);
...
}
}
}
});

tableView.setOnDragDetected(new EventHandler<MouseEvent>() { //drag
@Override
public void handle(MouseEvent event) {
// drag was detected, start drag-and-drop gesture
String selected = tableView.getSelectionModel().getSelectedItem();
if(selected !=null){

Dragboard db = tableView.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putString(selected);
db.setContent(content);
event.consume();
}
}
});

tableView.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
// data is dragged over the target
Dragboard db = event.getDragboard();
if (event.getDragboard().hasString()){
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
event.consume();
}
});

tableView.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
boolean success = false;
if (event.getDragboard().hasString()) {

String text = db.getString();
tableContent.add(text);
tableView.setItems(tableContent);
success = true;
}
event.setDropCompleted(success);
event.consume();
}
});

关于drag-and-drop - 在 JavaFX 表中拖放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com