Java - 拖动绘制的对象

时间:2012-11-20 16:04:17

标签: java events mouse draw drag

我有一个有五个按钮的应用程序:

i)方形ii)矩形iii)圆圈iv)三角形v)透明

单击前四个按钮中的任何一个将在绘图画布上绘制一个形状(这是一个JPanel)。

现在绘制的形状存储在名为 Shapes 的ArrayList中。现在,我想让用户点击任何形状并将其拖动到屏幕上。

这就是我的项目按类别组织的方式:

i)广场 ii)矩形 iii)圈子 iv)三角形 v)绘制画布(用于绘制形状的JPanel) vi)应用程序(用户界面)

这是我到目前为止所做的:

第一种方法检查鼠标光标是否在绘制的形状内。第二种方法绘制正方形。

上述鼠标事件处理程序应该在画布上拖动形状。但是,形状没有被拖动。我该如何解决这个问题?

注意

当单击四个按钮中的任何一个按钮时,形状会被正确添加到arraylist中。什么是行不通的拖延。

1 个答案:

答案 0 :(得分:0)

您可以查看我几年前为此类任务编写的定制器框架:使用鼠标移动和调整组件大小并允许进一步自定义。 “Snap-to-grid”特色包括在内!

它还支持使用JXIconCustomizerShapeIcon移动形状。

也许你觉得它很有用。 (它是开源的!)

我开始写一个教程(仍在建设中!):

http://softsmithy.sourceforge.net/lib/docs/tutorial/swing/customizer/index.html

有关添加组件的信息,请参阅:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/CustomizerBar.html

要自定义属性,请使用:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JCustomizerPropertyTable.html

将其注册到JCustomizerPane的SelectionManager,并设置JCustomizer对象的CustomizableProperties属性。

另请参阅JCustomizer的子类。

E.g。有

图像定制器&形状:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JXIconCustomizer.html

带内联编辑的标签自定义程序:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLabelCustomizer.html

线路定制器:

http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/swing/JLine2DCustomizer.html

还有许多类为菜单和工具栏操作提供支持。 (包含对某些“Java外观和感觉图形存储库”操作的支持。)

查看* .swing和* .swing.action包。

只要问你是否找不到它们。

主页:

http://www.softsmithy.org

下载:

http://sourceforge.net/projects/softsmithy/files/softsmithy/

的Maven:

<dependency>  
    <groupid>org.softsmithy.lib</groupid>  
    <artifactid>softsmithy-lib-core</artifactid>  
    <version>0.2</version>  
</dependency> 

API:

http://softsmithy.sourceforge.net/lib/docs/api/index.html