elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Necesito ayuda con eventos del Mouse (dibujar lineas) URGENTE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito ayuda con eventos del Mouse (dibujar lineas) URGENTE  (Leído 6,580 veces)
DarkSorcerer

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Necesito ayuda con eventos del Mouse (dibujar lineas) URGENTE
« en: 23 Febrero 2013, 04:53 am »

Mi programa es sencillo, es aprovechar de usar las librerias Swing y AWT para crear un pizarrón que dibuje solamente lineas, se me ocurrio crear una clase que extienda a JPanel con color blanco, le puse una barra de estado en la parte inferior del panel para que vaya indicando la posición del puntero, ademas, a JPanel le agregue eventos del mouse, de tal manera que se implementara mouseMoved para que indique la coordenada del puntero al moverse, tambien el mouseDragged con la intencion de que la linea se alargara mientras la estiro con el mouse, es ahi el gran problema, yo quiero que mi programa se vea como la linea se estira cuando se este moviendo el Mouse con el boton presionado y al momento de soltar el boton que quede dibujado en la pizarra, pero no me funciona, lo unico que hace es que la linea se muestra una vez que se solto el boton y yo quiero que en todo momento se vea como se alarga, pondre unas capturas y el codigo, ojala me puedan ayudar, he investigado en muchas partes pero no encuentro la solucion.

LA CLASE PRINCIPAL

Código:
package ejercicio210;

import javax.swing.JFrame;

public class Ejercicio210 {

    public static void main(String[] args) {
       
        JFrame ventana = new JFrame("Panel de dibujo");
        Panel panel = new Panel();
       
        ventana.add(panel);
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ventana.setSize(300,300);
        ventana.setResizable(false);
        ventana.setVisible(true);
       
    }
}


LA CLASE PANEL(LA PIZARRA)

Código:
package ejercicio210;

import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Graphics;

public class Panel extends JPanel {
   
    private JLabel etiquetaInferior;
    private JPanel panelInferior;
    private Linea linea;
    private Linea lineasDibujadas[] = new Linea[100];
    private int contadorLineas = 0;
   
    public Panel(){
       
        setLayout(new BorderLayout());
        setBackground(Color.WHITE);
       
        panelInferior = new JPanel();
        etiquetaInferior = new JLabel("Puntero fuera del panel");
        panelInferior.setLayout(new BorderLayout());
        panelInferior.add(etiquetaInferior,BorderLayout.WEST);
        add(panelInferior,BorderLayout.SOUTH);
        addMouseListener(new EventoMouse());
        addMouseMotionListener(new EventoMouse());
       
    }
   
    private class EventoMouse extends MouseAdapter implements MouseMotionListener {
       
        public void mousePressed(MouseEvent evento){
           
            linea = new Linea(evento.getX(),evento.getY(),evento.getX(),evento.getY());
            repaint();
           
        }
       
        public void mouseDragged(MouseEvent evento){
           
            linea.setFinalX(evento.getX());
            linea.setFinalY(evento.getY());
            etiquetaInferior.setText(String.format("%d,%d",evento.getX(),evento.getY()));
            repaint();
           
        }
       
        public void mouseReleased(MouseEvent evento){
           
            lineasDibujadas[contadorLineas] = linea;
            contadorLineas++;
            repaint();
           
        }
       
        public void mouseMoved(MouseEvent evento){
           
            etiquetaInferior.setText(String.format("%d,%d",evento.getX(),evento.getY()));

        }
       
    }
   
    public void paintComponent(Graphics g){
       
        super.paintComponent(g);
       
        for(int i=0; i<contadorLineas; i++){
           
            lineasDibujadas[i].dibujar(g);
           
        }
       
 

       
    }
   
   
}

LA CLASE LINEA

Código:
package ejercicio210;

import java.awt.Graphics;

public class Linea {
   
    private int origenX;
    private int origenY;
    private int finalX;
    private int finalY;
   
    public Linea(int origenX, int origenY, int finalX, int finalY){
       
        this.origenX = origenX;
        this.origenY = origenY;
        this.finalX = finalX;
        this.finalY = finalY;
       
    }
   
    public void setFinalX(int finalX){
       
        this.finalX = finalX;
       
    }
   
    public void setFinalY(int finalY){
       
        this.finalY = finalY;
       
    }
   
    public void dibujar(Graphics g){
       
        g.drawLine(origenX,origenY,finalX,finalY);
       
    }
   
}







« Última modificación: 25 Febrero 2013, 02:48 am por DarkSorcerer » En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: Necesito ayuda con eventos del Mouse (dibujar lineas) URGENTE
« Respuesta #1 en: 27 Febrero 2013, 08:35 am »

Hola:

En tu método paint, además de dibujar el array de lineas dibujadas, dibuja también la línea suelta que tienes.

Se bueno.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Controlar eventos del mouse « 1 2 3 4 »
Java
danielo- 39 26,921 Último mensaje 16 Junio 2018, 03:35 am
por 0xFer
[Duda] Dibujar lineas/recuadro
Programación Visual Basic
jaxoR 3 2,144 Último mensaje 3 Marzo 2015, 14:14 pm
por 79137913
Ayuda con Adsense y eventos onclick
Desarrollo Web
mascalapiz 2 2,138 Último mensaje 27 Julio 2015, 18:21 pm
por mascalapiz
Dibujar un corazón con el mouse al cargar la página (javascript)
Desarrollo Web
Beginner Web 0 3,054 Último mensaje 22 Enero 2023, 02:48 am
por Beginner Web
Necesito una lista clara de eventos.
Juegos y Consolas
Tachikomaia 0 3,111 Último mensaje 13 Abril 2024, 02:31 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines