Java 设置新按钮拖动检测到的问题A
我使用JavaFX,项目有2个Ancorpane窗格和paneDrop,其中一个有一个按钮,当我拖动这个按钮创建新按钮时,当我拖动setOnDragDetected方法到新按钮时。问题是,当我尝试拖动一个新按钮时,只有最后一次创建按钮移动Java 设置新按钮拖动检测到的问题A,java,button,drag-and-drop,javafx,Java,Button,Drag And Drop,Javafx,我使用JavaFX,项目有2个Ancorpane窗格和paneDrop,其中一个有一个按钮,当我拖动这个按钮创建新按钮时,当我拖动setOnDragDetected方法到新按钮时。问题是,当我尝试拖动一个新按钮时,只有最后一次创建按钮移动 @FXML private Button source; @FXML private AnchorPane pane; @FXML private AnchorPane paneDrop; private Button b; int i = 1; int
@FXML
private Button source;
@FXML
private AnchorPane pane;
@FXML
private AnchorPane paneDrop;
private Button b;
int i = 1;
int moveI = 0;
@FXML
private void dragDetected(MouseEvent event) {
System.out.println("onDragDetected");
b = new Button(i + "");
i++;
pane.getChildren().add(b);
b.setLayoutX(source.getLayoutX());
b.setLayoutY(source.getLayoutX());
/* drag was detected, start drag-and-drop gesture*/
paneDrop.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent k) {
paneDrop.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent k1) {
System.out.println("ondragExited");
pane.getChildren().remove(b);
paneDrop.getChildren().add(b);
b.setLayoutX(k1.getSceneX() - paneDrop.getLayoutX());
b.setLayoutY(k1.getSceneY() - paneDrop.getLayoutY());
b.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent t) {
/* drag was detected, start a drag-and-drop gesture*/
/* allow any transfer mode */
paneDrop.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent t) {
System.out.println("ondragOver");
paneDrop.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent t1) {
System.out.println("ondragOver");
if (t1.getGestureSource() != pane
&& t1.getDragboard().hasString()) {
t1.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
t1.consume();
}
});
b.setLayoutX(t.getSceneX());
b.setLayoutY(t.getSceneY() - 224);
if (t.getGestureSource() != pane
&& t.getDragboard().hasString()) {
t.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
t.consume();
}
});
Dragboard db = b.startDragAndDrop(TransferMode.MOVE);
System.out.println("ttttttttttttt");
/* Put a string on a dragboard */
ClipboardContent content = new ClipboardContent();
content.putString(b.getText());
db.setContent(content);
t.consume();
}
});
k1.consume();
}
});
System.out.println("ondragOver");
b.setLayoutX(k.getSceneX() - pane.getLayoutX());
b.setLayoutY(k.getSceneY() - pane.getLayoutY());
if (k.getGestureSource() != pane
&& k.getDragboard().hasString()) {
k.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
k.consume();
}
});
/* allow any transfer mode */
Dragboard db = source.startDragAndDrop(TransferMode.MOVE);
/* put a string on dragboard */
ClipboardContent content = new ClipboardContent();
//System.out.println(source.getText());
content.putString(source.getText());
db.setContent(content);
event.consume();
}