es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Muestre una línea entre el primer clic del ratón y el cursor.

Estoy tratando de escribir un programa que muestre una línea entre el primer clic y la posición del ratón después del primer clic. Luego, después del segundo clic, muestra otra línea.

Sé que tendré que utilizar MouseListener, getX() y getY() para obtener la posición donde se hizo clic con el ratón, pero la parte en la que estoy confundido es cómo mostrar una línea entre el primer clic y la posición del ratón, y luego mostrar otra línea después del segundo clic. El tutorial que encontré en línea solo me muestra cómo dibujar una línea entre dos clics de ratón.

Agradecería mucho si alguien puede orientarme en la dirección correcta.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes guardar las coordenadas del primer clic en una variable y dibujar una línea desde esas coordenadas hasta la posición del mouse cuando se mueve. Una vez que se detecta el segundo clic, puedes almacenar las coordenadas del segundo clic y dibujar una línea desde el primer clic hasta el segundo clic.

    Aquí tienes un código de muestra para darte una idea:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class LineDrawing extends JPanel implements MouseListener, MouseMotionListener {
    
        private int startX, startY, endX, endY;
        private boolean firstClick = true;
    
        public LineDrawing() {
            addMouseListener(this);
            addMouseMotionListener(this);
        }
    
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (!firstClick) {
                g.drawLine(startX, startY, endX, endY);
            }
        }
    
        public void mousePressed(MouseEvent e) {
            if (firstClick) {
                startX = e.getX();
                startY = e.getY();
                firstClick = false;
            } else {
                endX = e.getX();
                endY = e.getY();
                repaint();
                firstClick = true;
            }
        }
    
        public void mouseMoved(MouseEvent e) {
            if (!firstClick) {
                endX = e.getX();
                endY = e.getY();
                repaint();
            }
        }
    
        // Otros métodos de la interfaz MouseListener y MouseMotionListener
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("Line Drawing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            LineDrawing panel = new LineDrawing();
            panel.setPreferredSize(new Dimension(500, 500));
            frame.getContentPane().add(panel);
            frame.pack();
            frame.setVisible(true);
        }
    }
    

    El código anterior inicializa dos variables de coordenadas, startX y startY, para almacenar las coordenadas del primer clic. La variable booleana firstClick se utiliza para saber si el evento de mouse actual es el primer clic o el segundo. Una vez que se detecta el segundo clic, se utilizan las coordenadas endX y endY almacenadas por el segundo clic para dibujar una línea desde las coordenadas del primer clic.

    En el método mouseMoved(), actualizas el punto final de la línea cada vez que se mueve el mouse.

    Espero que esto te ayude a comenzar con tu programa de dibujo de líneas.

Comments are closed.