java - 在 Java 中绘制之字折线

标签 java event-handling drawing java-2d

我有一个设计项目,我应该使用鼠标在 Java 中绘制之字形。首先,我使用 MouseListener 并在 mouseClicked 方法中收集用户点击的所有点:

 public void mouseClicked(MouseEvent e){
    if(isAbleToDraw){
    corners[points]=e.getPoint();
        points++;
        repaint();
    }
 }

这里我使用 boolean 值“isAbleToDraw”来检查用户是否单击了“绘图”或“停止绘图”按钮。 然后,我像这样绘制锯齿形:

 super.paintComponent(graph);
 Graphics2D g = (Graphics2D) graph;
 g.drawLine(corners[i].x, corners[i].y, corners[i+1].x, corners[i+1].y);

最后,问题是,当我在绘制锯齿形后单击“停止绘制”按钮,然后再次单击“绘制”按钮后,它一直从它离开的最后一点开始绘制线条。换句话说,我无法绘制 2 个不同的锯齿形。

关于如何解决这个问题有什么想法吗?

最佳答案

如果您希望用户能够绘制多个之字形并在屏幕上同时看到它们,那么您可以使用点数组的Collection。每次用户单击“绘制”按钮时,您都会向集合中添加一个新数组,并使该新数组成为 Activity 数组。在您的 mouseClicked 中,您可以将用户点击的点添加到 Activity 点数组中,并且当您绘制组件时,而不是仅仅绘制一个之字形,遍历数组集合并绘制它们全部。

关于java - 在 Java 中绘制之字折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690083/

相关文章:

perl - AnyEvent 计时器问题

android - 只有 recyclerview 单元格中的图标是可点击的

python - 带有 TikZ 样式路径装饰的 Matplotlib 注释箭头

c# - 画一条平行线

java - 泛型 - ?使用

java - 兔龟赛跑视觉展示

java - JFileChooser.showSaveDialog(…) - 更改目录后保留建议的文件名

SharePoint 文档或项目下载/查看事件处理程序?

cocoa - 在 NSView-drawRect : method? 中画线的首选/推荐方法是什么

java - Joda-Time 库指定 mili 秒精度