Я пытаюсь добавить функциональность перетаскивания для моего проекта JavaFX. Это вроде работает, но не совсем одновременно
VBox questions = new VBox();
questions.getChildren().add(createQustionType("long answer"));
questions.setStyle("-fx-border-color: blue;");
root.setCenter(questions);
questions.setOnDragOver(event ->
{
event.acceptTransferModes(TransferMode.MOVE);
});
questions.setOnDragDropped(event ->
{
event.setDropCompleted(true);
questions.getChildren().add(createQustionType("long answer"));
event.consume();
});
questions.setOnDragDone(event -> {});
VBox sidePanel = new VBox();
root.setLeft(sidePanel);
//other unnecessary code removed for question
String[] types = new String[]{"multiple choice", "long answer", "short answer"};
for (String type : types)
{
Button btn = new Button(type);
btn.setOnDragDetected(event ->
{
currBtn = (Button) event.getSource();
event.consume();
});
sidePanel.getChildren().add(btn);}
метод createQuestionType возвращает граничную панель и принимает один параметр строки
Это то, что я имею до сих пор, и я не знаю, где я иду не так, потому что, кажется, это работает, когда я перетаскиваю файл со своего рабочего стола или документов и т. Д., Что я не хочу, чтобы это делалось. Я хочу использовать кнопки, добавленные на боковую панель, для этого она предназначена.
Кроме того, я пытался изменить курсор при перетаскивании, но тоже не получилось. Если бы кто-то мог показать мне, что я делаю неправильно, это было бы здорово.