1

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

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

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

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

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

i) 正方形 ii) 矩形 iii) 圆形 iv) 三角形 v) 绘图画布(用于绘制形状的 JPanel) vi) 应用程序(用于用户界面)

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

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

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

笔记

当单击四个按钮中的任何一个时,形状被正确地添加到数组列表中。不起作用的是拖动。

4

1 回答 1

0

你可以看看我几年前为这些任务编写的定制器框架:用鼠标移动和调整组件大小,并允许进一步定制。包括“对齐网格”功能!

它还支持使用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 的子类。

例如有

图像和形状的定制器:

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 Look and Feel Graphics Repository”操作的支持。)

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

只要问我你是否找不到他们。

主页:

http://www.softsmithy.org

下载:

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

马文:

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

接口:

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

于 2012-11-20T16:20:37.770 回答