Thursday 2 March 2017

Drag n Drop JLabel from JToolBar

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.dnd.*;
import javax.swing.border.*;

public class DragDrop1 extends JFrame
    {
     JPanel tpan = new JPanel();
     JToolBar fpan = new JToolBar();
   
     Cursor dc = new Cursor(Cursor.DEFAULT_CURSOR);
     Cursor yd = DragSource.DefaultMoveDrop;
     Point mp;
   
    public DragDrop1()
        {
         super(" From .......> To");
         addWindowListener(new WindowAdapter()
             {
             public void windowClosing(WindowEvent ev)
                 {
                 dispose();
                 System.exit(0);
             }
         });
         setBounds(10,10,650,450);
         fpan.setPreferredSize(new Dimension(1,26));
         fpan.setBorder(BorderFactory.createRaisedBevelBorder());
         tpan.setLayout(null);
         getContentPane().add("North",fpan);
         getContentPane().add("Center",tpan);
         add_comp(new JLabel(" D1 "),Color.red);
         add_comp(new JLabel(" D2 "),Color.green);
         setVisible(true);
    }
   
    private void add_comp(JLabel l, Color c)
        {
         fpan.addSeparator();
         l.setOpaque(true);
         l.setHorizontalAlignment(SwingConstants.CENTER);
         l.setForeground(Color.black);
         l.setBackground(c);
         fpan.add(l);
         mak_lis(l);
    }
    private void mak_lis(final JLabel l)
        {
         l.addMouseListener(new MouseAdapter()
             {
             public void mousePressed(MouseEvent m)
                 {
                 setCursor(yd);
                 l.setBorder(new MatteBorder(1,1,1,1,Color.black));
             }
             public void mouseReleased(MouseEvent m)
                 {
                 l.setBorder(null);
                 setCursor(dc);
                 int x = m.getX()+l.getX();
                 int y = m.getY()+l.getY()-tpan.getY();
                 if (y > 0 && x > 0 && y < tpan.getHeight() && x < tpan.getWidth())
                     {
                     tpan.add(new_lab(l,x,y));
                     tpan.repaint();
                 }
             }
         });
    }
    private Component new_lab(JLabel co, int x, int y) //function to draw label in new posn
        {
         JLabel label = new JLabel(co.getText());
         label.setOpaque(true);
         label.setHorizontalAlignment(SwingConstants.CENTER);
         label.setForeground(co.getForeground());
         label.setBackground(co.getBackground());
         label.setBounds(x,y,co.getWidth(),co.getHeight());
         return(label);
    }
    public static void main (String[] args)
        {
         new DragDrop1();
    }
   
}


No comments: