JavaSwing/AWT-使用上下文菜单绘制对象

JavaSwing/AWT-使用上下文菜单绘制对象,java,swing,drawing,contextmenu,awt,Java,Swing,Drawing,Contextmenu,Awt,我想做一些类似于图表编辑器的东西——一个允许用户在画布上创建、查看和编辑一组形状的应用程序。我的GUI基本上有三个部分——一个标准的JMenuBar,右边一个用于显示形状信息的JPanel,旁边一个用于可视化形状的JPanel 除此之外,我还有一个定义形状的包。为了简单起见,假设只有一个正方形,包含以下信息:画布上的坐标、大小、用户定义的名称和描述、颜色。 项目的主要类(JFrame的扩展)包含正方形列表 现在,我可以通过使用drawrect等在JPanel中简单地绘制形状来可视化这些形状,但我

我想做一些类似于图表编辑器的东西——一个允许用户在画布上创建、查看和编辑一组形状的应用程序。我的GUI基本上有三个部分——一个标准的JMenuBar,右边一个用于显示形状信息的JPanel,旁边一个用于可视化形状的JPanel

除此之外,我还有一个定义形状的包。为了简单起见,假设只有一个正方形,包含以下信息:画布上的坐标、大小、用户定义的名称和描述、颜色。 项目的主要类(JFrame的扩展)包含正方形列表

现在,我可以通过使用drawrect等在JPanel中简单地绘制形状来可视化这些形状,但我想创建一个交互式编辑器-如果用户右键单击可视化的形状,就会弹出一个上下文菜单,允许用户移动它、更改其属性或完全删除形状。单击JPanel中的空白点将允许用户(再次通过菜单)创建一个新形状

是否有一种自动化的方法来实现这一点,而不是手动将画布的每个像素映射到某个形状并在右键单击时进行检查?比如,我可以说,在JPanel中画这个,然后在单击时做一些事情。。。 一个相关的问题,当我在JPanel中编辑形状时,我如何访问主应用程序类中的方形/圆形列表,以便我可以真正更改它?我想这很简单,但现在我不知道该怎么做


请为我指出正确的方向,我们将非常感谢您提供的任何信息、提示、示例、相关教程的链接……

最常见的方法是允许形状确定点是否位于形状内部。希望您的代码是面向对象的,并且每种形状都是一个类

您所要做的就是为每个形状定义一个方法,例如
boolean isInside(point:point)
。一旦你有了这些,你所要做的就是按z的相反顺序(从上到下)走这些形状,看看鼠标点击点在哪里。如果它不适用于任何形状-单击画布。一旦你有了这些信息,你可以显示一个合适的菜单


希望这有帮助

正如@eugener所建议的那样,实现该接口的类有一个
contains()
方法可用于此。是一个示例,说明了您提到的几个功能