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

标签 java swing drawing contextmenu awt

我想制作类似于图表编辑器的东西 - 一个允许用户在 Canvas 上创建、查看和编辑一堆形状的应用程序。我的 GUI 本质上由三个部分组成 - 一个标准的 JMenuBar、右侧的一个用于显示形状信息的 JPanel 以及旁边的一个用于可视化形状的 JPanel。

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

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

是否有一种自动化的方法来执行此操作,而不是手动保留将 Canvas 的每个像素映射到特定形状的矩阵并在右键单击时检查它?例如,我可以说,在 JPanel 中绘制它并在单击时执行一些操作... 一个相关的问题,当我在 JPanel 中编辑形状时,如何访问主应用程序类中的 Square/Circle 列表,以便我可以真正更改它?我想这很简单,但现在我不知道该怎么做。

请为我指出正确的方向,任何事情都会受到赞赏,提示,示例,相关教程的链接......

最佳答案

根据@eugener的建议,实现 Shape 的类接口(interface)有一个对此很有用的 contains() 方法。 GraphPanel是一个示例,说明了您提到的几个功能。

关于Java Swing/AWT - 使用上下文菜单绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367762/

相关文章:

java - 保存到内存 Android

c# - GDI+ 中出现一般性错误

java - 为什么Java不使用ArrayList类来实现Hashtable/HashMap类?

java - 在 JTextField 上添加 changeListener 时出错

java - 当玩家第二次尝试时会攻击两次

java - 在 java swing 中使用 jTable 的论坛主题 View

java - 使用 Java 在 Android 模拟器上的两点之间绘图

iphone - iOS——有没有类似 CGContextSetLineDash 的路径?

java - Box2D - 如何防止靠近墙壁时连续跳跃

java - 没有调用 paint 方法