Está en la página 1de 4

CodigosJava.BlogSpot.

com
Codigos Java - La Reingeniería Comienza

Arrastrar (drag) componentes con el ratón (Java)


En una ocasión tuve que hacer una aplicación para crear diagramas en la que tenía que insertar
componentes swing como JButton o JLabel dentro de un frame y que permitía arrastrarlos (drag) con
el ratón por medio de la interfaz MouseMotionListener por toda la superfice del contenedor.

Básicamente consiste en crear unos objetos derivados de JButton o de JLabel, por ejemplo, e
implementarles un MouseMotionListener. Mediante el método mouseDragged se registra la variación
de coordenadas del puntero del ratón cuando se arrastra el componente y se actualiza su posición.

Es importante recordar que el panel o frame que contenga esos elementos debe tener un layout nulo y
que dichos elementos deben tener unas coordenadas iniciales establecidas por el método setBounds.

Aquí va un sencillo código de ejemplo:


import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class DragTest {

public static void main(String[] args) {

MyWindow window = new MyWindow();

window.setVisible(true);

window.setPreferredSize(new Dimension(400,400));

window.pack();

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

class MyWindow extends JFrame{

public MyWindow(){

super(”Drag test”);

Container container = getContentPane();

container.setLayout(null);

MyButton boton1 = new MyButton(”Move me”);

container.add(boton1);

boton1.setBounds(10, 10, 100, 30);

class MyButton extends JButton implements MouseMotionListener{

public MyButton(String text){

super.setText(text);

addMouseMotionListener(this);

public void mouseDragged(MouseEvent mme) {

setLocation(

this.getX() + mme.getX() - this.getWidth() / 2,

this.getY() + mme.getY() - this.getHeight() / 2

);

public void mouseMoved(MouseEvent mme) {}


}

Faznet

2 comentarios:

Anónimo 11:33
Ahora que pasaba a actualizarme en este tema ya que necesito crear una aplicacion escolar educacional
que precisamente permita el Drag de componentes java y te agradezco el claro ejemplo. Pero me surgio
una duda que hace tiempo me surgio y nunca me puse a investigar: Mi duda es: ¿Que diferencia hay entre
un setLocation y un SetBounds?.. Muchas gracias de antemano.
Responder

Anónimo 03:40
setBounds = setLocation + setSize

setBounds pide coordenadas y tamaño y setLocation solo coordenadas


Responder

Introduce tu comentario...

Comentar como: Cuenta de Goog

Publicar Vista previa

‹ Página principal ›
Ver versión web

Con la tecnología de Blogger.

También podría gustarte