java - 如何创建响应鼠标点击的 java swing Graphic 对象?

标签 java swing

我需要在 Canvas 的不同位置动态绘制图形元素(正方形),并且我需要监听鼠标点击以更改正方形的位置。 如何向 Graphics 对象添加鼠标监听器?我必须使用其他方法吗?

int x = 0;
int y = 0;
 Graphics g = getGraphics(); // get Graphics context
                  g.setColor(Color.red);
          g.fillRect( x - 25, y - 15, 60, 30 );
          g.setColor(Color.black);
          g.drawRect( x - 25, y - 15, 60, 30 );
                  g.dispose();

最佳答案

我可能会使用 JPanel 作为形成 Canvas 的较大组件的子元素。 JPanel,因为它是 JComponent 的子类,允许您通过 addMouseListener() 添加鼠标监听器,并覆盖其 paintComponent()方法。

如果您想移动方 block ,只需重新定位 JPanel 即可。

(就此而言,如果它是正方形或矩形,您甚至不需要重写 PaintComponent,您只需通过适当调用 setBorder 和 setBackground 即可完成此操作。)

<小时/>

另一种方法是使用 JPanel 作为整个 Canvas ,重写 PaintComponent 来绘制您喜欢的任何内容,在 JPanel 上添加MouseListener,然后手动确定鼠标监听器事件是否发生在图形元素的几何形状内。

关于java - 如何创建响应鼠标点击的 java swing Graphic 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246387/

相关文章:

java - 使用带有观察者模式的 MVC 模式构建 Swing GUI

java - 当容器大小更改时,JTable 仅调整选定列的大小

java - 如何在本地目录中包含java应用程序中的图像?

java - 在 Android Studio 中为每个方向设置不同的约束

java - Java进程的关闭 Hook 不会在gradle守护进程中触发

java - 声纳显示方法可能无法清理已检查异常的流或资源

java - 即使绘制新文本,也设置一次 swing 应用程序的默认字体

java - 代理背后的 Google Drive API Java 客户端

java - 查找 PI 具有特定值的术语

java - 键入时如何正确删除自动添加的右括号