Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Trascinare componenti (drag)

    Ciao ragazzi =) mi kiedevo come si potesse realizzare un semplice Jframe all interno del quale fosse possibile spostare (tramite trascinamento col mouse) JButton o JLabel
    ..ad esempio supponiamo di voler rendere mobile un JButton..se scrivo questo codice ottengo spostamenti imprecisi..come bisogna fare??grazie a ki sarà disponibile a risp =)



    [
    JButton x =new JButton ("prova");
    x.addMouseListener(drag);


    MouseListener drag = new MouseListener ()
    {





    @Override
    public void mouseClicked(MouseEvent arg0) {}

    @Override
    public void mouseEntered(MouseEvent arg0) {}

    @Override
    public void mouseExited(MouseEvent arg0) {}
    @Override
    public void mousePressed(MouseEvent arg0) {}
    @Override
    public void mouseReleased(MouseEvent me) {
    int x=me.getX();
    int y=me.getY();
    JLabel comp = (JLabel) me.getSource ();

    comp.setLocation(x,y);


    }
    };]

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Trascinare componenti (drag)

    Originariamente inviato da claujava
    ad esempio supponiamo di voler rendere mobile un JButton
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class DragComponentTestFrame extends JFrame {
        public DragComponentTestFrame() {
            super("Test drag di componenti");
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setSize(400, 300);
    
            Container contentPane = getContentPane();
            contentPane.setLayout(null);    // Nessun layout manager
    
            JButton b = new JButton("JButton");
            b.setBounds(40, 50, 90, 40);
            ComponentDragHandler.register(b);
    
            JLabel l = new JLabel("JLabel");
            l.setOpaque(true);
            l.setBackground(Color.LIGHT_GRAY);
            l.setHorizontalAlignment(SwingConstants.CENTER);
            l.setBounds(190, 120, 80, 30);
            ComponentDragHandler.register(l);
    
            contentPane.add(b);
            contentPane.add(l);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new DragComponentTestFrame().setVisible(true);
                }
            });
        }
    }
    
    class ComponentDragHandler extends MouseAdapter implements MouseMotionListener {
        private int baseX;
        private int baseY;
    
        public void mousePressed(MouseEvent e) {
            baseX = e.getX();
            baseY = e.getY();
        }
    
        public void mouseDragged(MouseEvent e) {
            Component comp = e.getComponent();
    
            Point compPoint = comp.getLocation();
            Point clickPoint = e.getPoint();
    
            int x = compPoint.x + clickPoint.x - baseX;
            int y = compPoint.y + clickPoint.y - baseY;
    
            comp.setLocation(x, y);
        }
    
        public void mouseMoved(MouseEvent e) {}
    
        public static void register(Component c) {
            ComponentDragHandler handler = new ComponentDragHandler();
            c.addMouseListener(handler);
            c.addMouseMotionListener(handler);
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.