• Domingo 22 de Diciembre de 2024, 17:00

Autor Tema:  Mover Un Boton En Un Jpanel  (Leído 6961 veces)

ricardofutami

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Mover Un Boton En Un Jpanel
« en: Jueves 26 de Mayo de 2005, 11:23 »
0
Hola.
Quisiera poder arrastrar con el ratón un botón situado en un JPanel.
Al JPanel le he puesto como layout null.
El botón lo he situado con setBounds en una coordenada cualquiera y le añado y MouseMotionListener.
El botón lo puedo arrastrar pero pasa algo raro, va dando como saltos un pixel si un pixel no.
Cada vez que se llama a mousedragged una vez va a donde yo le digo y la otra a un punto cualquiera de la pantalla así mietras lo voy moviendo.
Código: Text
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.MouseEvent;
  5. import java.awt.event.MouseListener;
  6. import java.awt.event.MouseMotionListener;
  7.  
  8. public class Mover {
  9.     public static void main(String[] args){
  10.         JFrame mv = new MiVentana();
  11.         mv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  12.         mv.pack();
  13.         mv.setVisible(true);
  14.     }
  15. }
  16.  
  17. class MiVentana extends JFrame{
  18.     MiPan mp = new MiPan();
  19.     public MiVentana(){
  20.         Container cp = getContentPane();
  21.         cp.setLayout(new BorderLayout());
  22.         cp.add(mp);        
  23.     }
  24. }
  25.  
  26. class MiPan extends JPanel{
  27.     MiBoton b1 = new MiBoton("pepe",100,100);
  28.     MiLinea l1 = new MiLinea();
  29.     public MiPan(){
  30.         setLayout(null);
  31.         setBackground(Color.WHITE);
  32.         setPreferredSize(new Dimension(400,400));
  33.         add(l1);
  34.         l1.setBounds(200,100,100,4);
  35.         l1.setEnabled(false);
  36.         add(b1);
  37.         b1.setBounds(100,100,100,20);
  38.         b1.addMouseMotionListener(new MouseMotionListener(){
  39.             public void mouseDragged(MouseEvent arg0){
  40.                 b1.setBounds(arg0.getX(),arg0.getY(),100,20);
  41.                  b1.setText(arg0.getX()+" : "+arg0.getY());
  42.             }
  43.             public void mouseMoved(MouseEvent arg0) {}
  44.         });
  45.     }
  46. }
  47.  
  48. class MiBoton extends JButton{
  49.     String cont;
  50.     int x;
  51.     int y;
  52.     public MiBoton(String cont, int x, int y){
  53.         this.cont = cont;
  54.         this.x = x;
  55.         this.y = y;
  56.         setBackground(Color.GREEN);
  57.         setPreferredSize(new Dimension(100,20));
  58.         setBorderPainted(true);
  59.         setEnabled(false);
  60.         setText(cont);  
  61.     }
  62. }
  63.  
  64. class MiLinea extends JButton{
  65.     public MiLinea(){
  66.         setPreferredSize(new Dimension(100,4));
  67.         setBackground(Color.BLACK);
  68.         setBorder(null);
  69.     }
  70. }
  71.  
  72.  
Es un código de prueba, está un poco desordenado.