java随着鼠标的移动绘制线条

标签 java mouseevent awt draw graphics2d

我想在我的应用程序中添加一项功能,允许用户通过在起始位置单击鼠标并在结束位置释放鼠标来绘制直线。这条线应该随着鼠标的移动而移动,直到最终释放为止;类似于使用 Microsoft Paint 应用程序绘制线条的方式。

如何实现这一点,以便在线条移动时重新绘制线条,而不重新绘制可能已经在该矩形区域中绘制的其他内容?

最佳答案

试试这个...当鼠标移动(拖动)时在屏幕上画一条红线。

public static void main(String args[]) throws Exception {
    JFrame f = new JFrame("Draw a Red Line");
    f.setSize(300, 300);
    f.setLocation(300, 300);
    f.setResizable(false);
    JPanel p = new JPanel() {
        Point pointStart = null;
        Point pointEnd   = null;
        {
            addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    pointStart = e.getPoint();
                }

                public void mouseReleased(MouseEvent e) {
                    pointStart = null;
                }
            });
            addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseMoved(MouseEvent e) {
                    pointEnd = e.getPoint();
                }

                public void mouseDragged(MouseEvent e) {
                    pointEnd = e.getPoint();
                    repaint();
                }
            });
        }
        public void paint(Graphics g) {
            super.paint(g);
            if (pointStart != null) {
                g.setColor(Color.RED);
                g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
            }
        }
    };
    f.add(p);
    f.setVisible(true); 
}

关于java随着鼠标的移动绘制线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9711938/

相关文章:

java - 预加载 SourceDataLine 以减少延迟

java - 从 Java 中的 TTF 文件加载一些 TrueType 字体导致 FontFormatException : Font name not found

java - JBoss 缓存与 JBoss 服务器之间的兼容性

java - 为什么 Set 允许在这里重复?

java - SWT - 如何重新调整/设置驻留在另一个复合 Material 中的复合 Material 的大小?

javascript - 为什么在 Firefox 中无法使用 JavaScript 拖动图像?

javascript - 图标鼠标移开后 div 消失

java - 可选的映射类型转换为子类对象

java - AWT Canvas 在手动调整大小时闪烁

java - 按钮改变颜色,但我需要它们在单击时停止