Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在画布上实现拖放?_Java_Javafx - Fatal编程技术网

Java 如何在画布上实现拖放?

Java 如何在画布上实现拖放?,java,javafx,Java,Javafx,更具体地说,我将如何实现拖放功能,以便将拖到画布上的图像文件绘制在画布上?我曾尝试在画布上使用VBox侦听器,但没有成功。提供了by程序的源代码 在我的控制器initialize()函数中,我有以下代码画布通过@FXML注释从FXML文件传递: public void initialize(){ GraphicsContext g=canvas.getGraphicsContext2D(); //刷子式设定器 画笔(); //获取屏幕尺寸并相应地设置画布 维度screenSize=getScre

更具体地说,我将如何实现拖放功能,以便将拖到画布上的图像文件绘制在画布上?我曾尝试在画布上使用
VBox
侦听器,但没有成功。提供了by程序的源代码

在我的控制器
initialize()
函数中,我有以下代码<代码>画布通过
@FXML
注释从FXML文件传递:

public void initialize(){
GraphicsContext g=canvas.getGraphicsContext2D();
//刷子式设定器
画笔();
//获取屏幕尺寸并相应地设置画布
维度screenSize=getScreenSize();
double screenWidth=screenSize.getWidth();
double screenHeight=screenSize.getHeight();
canvas.setHeight(屏幕高度/1.5);
canvas.setWidth(屏幕宽度/1.5);
canvas.setonMouseDrawed(e->{
//这里是绘图代码
}); 
canvas.setOnDragOver(e->{
//需要读取拖动图像的数据
});
canvas.setonmousedragreeled(e->{
//需要将拖动的数据放到画布上
});
}

此处侦听的
鼠标缩放事件是错误的事件。当鼠标在应用程序内的“完全按下拖动释放手势”期间释放时,会触发该事件;当在“平台支持的拖放手势”期间拖放数据时,则不会发生这种情况(有关这些不同拖动模式的说明,请参阅)。因此,您需要:

canvas.setOnDragDropped(e -> {
    // ...
});

假设处理程序的实现是正确的,这将使您能够从文件中删除图像并将其绘制在画布上。

此处侦听的
mousedragrarelated
事件是错误的事件。当鼠标在应用程序内的“完全按下拖动释放手势”期间释放时,会触发该事件;当在“平台支持的拖放手势”期间拖放数据时,则不会发生这种情况(有关这些不同拖动模式的说明,请参阅)。因此,您需要:

canvas.setOnDragDropped(e -> {
    // ...
});

假设处理程序的实现是正确的,这将使您能够从文件中删除图像并将其绘制在画布上。

在问题中发布代码,而不是发布链接。在这种情况下(因为有很多代码),您应该创建应用程序的最低版本(a),以便在问题中显示问题。简而言之,您应该在画布上注册拖放处理程序。(我不知道什么是
VBox
侦听器)。在你的问题中发布代码,而不是发布链接。在这种情况下(因为有很多代码),您应该创建应用程序的最低版本(a),以便在问题中显示问题。简而言之,您应该在画布上注册拖放处理程序。(我不知道什么是
VBox
侦听器)。