Je travaille avec javafx 2.0 et netbean 7.1, je suis confronté à un problème lors d'un glisser-déposer sur une image sur un ImageView, .i gardé l'image comme une source (une image) et 2 point cible (2 case comme point cible) .lorsque vous essayez de faire glisser une image pour la première fois, son fonctionnement est correct et après que l'image des sources est entrée dans la case target.and essayer de faire glisser l'image, erreur suivante est tracée "java.lang .IllegalArgumentException: Taille de tampon octet 18x15 [1080]! = 0 "Événement de glisser-déposer dans Javafx 2.0
Une fois l'image déplacée vers l'objet de destination, j'ai besoin de paramétrer l'écouteur pour la changer en source, je sens que son erreur de jet dans cet endroit ..
code d'utilisation
public class DragandDropEx extends Application {
/**
* @param args the command line arguments
*/
GridPane Board;
ImageView deactivateImageView = new ImageView();
ImageView newImageView = new ImageView();
final Rectangle target = new Rectangle(0, 0, 50, 50);
final Rectangle target2 = new Rectangle(0, 0, 50, 50);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
target.setFill(Color.CHOCOLATE);
target2.setFill(Color.BLUE);
Image image = new Image(getClass().getResourceAsStream("triangle.png"));
getDeactivateImageView().setImage(image);
Board = new GridPane();
primaryStage.setTitle("Drag and Drop");
createSource(getDeactivateImageView());
target.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent events) {
events.acceptTransferModes(TransferMode.MOVE);
events.consume();
createTargetDrop(target,0,8);
}
});
target2.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent events) {
events.acceptTransferModes(TransferMode.MOVE);
events.consume();
createTargetDrop(target2,0,9);
}
});
Board.add(getDeactivateImageView(), 0, 1);
Board.add(target, 0, 8);
Board.add(target2, 0, 9);
StackPane root = new StackPane();
root.getChildren().add(Board);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
private void createSource(final ImageView imageView) {
imageView.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent events) {
Dragboard storeImage =imageView.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putImage(imageView.getImage());
storeImage.setContent(content); **// here i am getting error**
events.consume();
}
});
}
private void createTargetDrop(final Rectangle target,final int xCordination,final int yCordination) {
target.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
Image dragedImage = db.getImage();
getNewImageView().setImage(dragedImage);
getDeactivateImageView().setVisible(false);
setDeactivateImageView(getNewImageView());
Board.add(getDeactivateImageView(),xCordination,yCordination);
event.consume();
createSource(getDeactivateImageView()); // setting listener to new image
}
});
}
}
salut, j'ai essayé 2.1 aussi, mais je suis toujours confronté au même problème. –