90 lines
2.8 KiB
Java
90 lines
2.8 KiB
Java
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();
|
|
}
|
|
|
|
}
|