Я пытаюсь изучить JavaFX путем реализации шахматной игры. Моя проблема: я понятия не имею, как перемещать кусок, перетаскивая его. В моем коде у меня есть 2D-массив ярлыков, в котором метка содержит ImageView. Я хочу знать, как определить другую часть (узел) под перетаскиваемой фигурой. Спасибо заранее.перетащить узел в другой узел
1
A
ответ
0
В основном вы должны использовать setOnDragDetected()
метод для элемента, который вы хотите перетащить, а затем использовать setOnDragOver()
на целевой элемент, чтобы определить, какие TransferMode принимает и setOnDragDropped()
на целевой метод, когда падение done.Finally setOnDragComplete()
на исходной позиции чтобы определить, что сопротивление было успешным.
1) Ссылка для получения дополнительной информации от оракула here
2) Хороший пример here
3) Второй пример, который легко понять:
/**
* Demonstrates a drag-and-drop feature.
*/
public class HelloDragAndDrop extends Application {
@Override
public void start(Stage stage) {
stage.setTitle("Hello Drag And Drop");
Group root = new Group();
Scene scene = new Scene(root, 400, 200);
scene.setFill(Color.LIGHTGREEN);
final Text source = new Text(50, 100, "DRAG ME");
source.setScaleX(2.0);
source.setScaleY(2.0);
final Text target = new Text(250, 100, "DROP HERE");
target.setScaleX(2.0);
target.setScaleY(2.0);
source.setOnDragDetected(event -> {
/* drag was detected, start drag-and-drop gesture */
System.out.println("onDragDetected");
/* allow any transfer mode */
Dragboard db = source.startDragAndDrop(TransferMode.ANY);
/* put a string on dragboard */
ClipboardContent content = new ClipboardContent();
content.putString(source.getText());
db.setContent(content);
event.consume();
});
target.setOnDragOver(event -> {
/* data is dragged over the target */
System.out.println("onDragOver");
/*
* accept it only if it is not dragged from the same node and if it
* has a string data
*/
if (event.getGestureSource() != target && event.getDragboard().hasString()) {
/* allow for both copying and moving, whatever user chooses */
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
event.consume();
});
target.setOnDragEntered(event -> {
/* the drag-and-drop gesture entered the target */
System.out.println("onDragEntered");
/* show to the user that it is an actual gesture target */
if (event.getGestureSource() != target && event.getDragboard().hasString()) {
target.setFill(Color.GREEN);
}
event.consume();
});
target.setOnDragExited(event -> {
/* mouse moved away, remove the graphical cues */
target.setFill(Color.BLACK);
event.consume();
});
target.setOnDragDropped(event -> {
/* data dropped */
System.out.println("onDragDropped");
/* if there is a string data on dragboard, read it and use it */
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasString()) {
target.setText(db.getString());
success = true;
}
/*
* let the source know whether the string was successfully
* transferred and used
*/
event.setDropCompleted(success);
event.consume();
});
source.setOnDragDone(event -> {
/* the drag-and-drop gesture ended */
System.out.println("onDragDone");
/* if the data was successfully moved, clear it */
if (event.getTransferMode() == TransferMode.MOVE) {
source.setText("");
}
event.consume();
});
root.getChildren().add(source);
root.getChildren().add(target);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Смежные вопросы
- 1. Скопируйте узел xml на другой узел
- 2. Поверните узел, чтобы посмотреть на другой узел
- 3. перетащить узел TreeView в задачу ячейки DataGridView
- 4. Как узнать, пересекает ли узел другой узел?
- 5. Узел узла удерживает другой узел или его адрес в java
- 6. Получить другой узел в JavaFX после mousePressed
- 7. XSLT проверяет, содержит ли узел XML другой узел XML?
- 8. Как перенести узел/родительский узел TreePanel на другой TreePanel?
- 9. Как выбрать узел, на который ссылается другой узел с XPath?
- 10. XMLReader пропускает каждый другой узел
- 11. IOS Scenekit: вращать узел, чтобы посмотреть на другой узел
- 12. Firebase «symlink» на другой узел
- 13. Изменить родительский узел на другой
- 14. Как перенаправить MouseEvent.MOUSE_PRESSED на другой узел?
- 15. Перетащите узел дерева в другой корневой узел в динамически созданный TreeView с помощью Jquery
- 16. sigma.js: Есть ли способ перетащить один узел в отдельности
- 17. узел delete: узел терминатора в односвязном списке?
- 18. (Delphi TTreeView), как перетащить/узел падение ниже (или выше), выбранный узел
- 19. Сделать случайный узел, первый узел
- 20. Скопируйте узел XML в другой файл
- 21. Как ссылаться на другой узел в объекте?
- 22. javafx - как преобразовать узел в другой объект
- 23. записать точный узел в другой файл
- 24. Импортировать узел в другой XML-документ
- 25. RewriteRule один единственный узел в другой домен
- 26. Поместите узел в другой с SimpleXML
- 27. Скопируйте узел из одного xml в другой
- 28. добавить узел в узел XML dom4j
- 29. Явный узел отставания или корневой узел как узел отставания?
- 30. Что разница между Node * узел [100] и узел узел [100]
Это worked.Thank вас так много –
@ M.Sianaki, когда ответ работает на вас, отметьте его как решение. :) – GOXR3PLUS