Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

Java: ПримерыВторой пример по Drag & Drop

Второй пример по Drag & Drop


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.dnd.*;
import java.awt.datatransfer.*;
public class DragAndDrop extends Frame
{
 JButton button = new JButton("Hello");
 JPanel panel = new JPanel();
 ComponentA component1=new ComponentA(button);
 public DragAndDrop()
 {
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    dispose();
    System.exit(0);
   }
  });
  this.add(panel);
  panel.add(component1);
  panel.add(button);
  setDrag();
 }
 public static void main(String args[])
 {
  System.out.println("Starting Drag And Drop Example ...");
  DragAndDrop mainFrame = new DragAndDrop();
  mainFrame.setSize(400, 400);
  mainFrame.setLocation(100,100);
  mainFrame.setTitle("Drag And Drop Example");
  mainFrame.setVisible(true);
 }
 void setDrag()
 {
 class ViewTransferable implements Transferable
 {
  DataFlavor[] flavors = new DataFlavor[]{DataFlavor.stringFlavor};
  public ViewTransferable()
  {
  }
  public DataFlavor[] getTransferDataFlavors()
  {
   return flavors;
  }
  public boolean isDataFlavorSupported(DataFlavor flavor)
  {
   if (flavor.equals(flavors[0]))
   {
    return true;
   }
   return false;
  }
  public Object getTransferData(DataFlavor flavor)throws UnsupportedFlavorException
  {
   if (!isDataFlavorSupported(flavor))
   {
    System.out.println("unsuported flavor");
    return null;
   }
   if (flavor.equals(flavors[0]))
   {
    return(null);
   }
   return null;
  }
 }
 class CanvasDragSource implements DragGestureListener, DragSourceListener
 {
  CanvasDragSource()
  {
   DragSource dragSource = DragSource.getDefaultDragSource();
   dragSource.createDefaultDragGestureRecognizer(button,DnDConstants.ACTION_COPY_OR_MOVE,this);
  }
  public void dragGestureRecognized(DragGestureEvent dge)
  {
   Transferable transferable = new ViewTransferable();
   dge.startDrag(null,transferable,this);
  }
  public void dropActionChanged(DragSourceDragEvent dsde){}
  public void dragEnter(DragSourceDragEvent dsde){}
  public void dragOver(DragSourceDragEvent dsde){}
  public void dragExit(DragSourceEvent dse){}
  public void dragDropEnd(DragSourceDropEvent dsde){}
 }
 class CanvasDropTarget implements DropTargetListener
 {
  DropTarget dropTarget;
  boolean acceptableType;
  CanvasDropTarget()
  {
   dropTarget = new DropTarget(panel, DnDConstants.ACTION_COPY_OR_MOVE,this,true,null);
  }
  public void dragOver(DropTargetDragEvent dtde)
  {
   acceptOrRejectDrag(dtde);
   component1.setVisible(true);
component1.setBounds((int)dtde.getLocation().getX()+1,(int)dtde.getLocation().getY()+1,button.getWidth(),button.getHeight());
  }
  public void dropActionChanged(DropTargetDragEvent dtde)
  {
   acceptOrRejectDrag(dtde);
  }
  public void dragExit(DropTargetEvent dte){}
  public void drop(DropTargetDropEvent dtde)
  {
   if ((dtde.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0)
   {
    dtde.acceptDrop(dtde.getDropAction());
    dtde.getDropTargetContext().dropComplete(true);
    double x = dtde.getLocation().getX();
    double y = dtde.getLocation().getY();
    button.setLocation((int)x,(int)y);
    component1.setVisible(false);
   }
   else
   {
    dtde.rejectDrop();
   }
  }
  public void dragEnter(DropTargetDragEvent dtde)
  {
   checkTransferType(dtde);
   acceptOrRejectDrag(dtde);
  }
  boolean acceptOrRejectDrag(DropTargetDragEvent dtde)
  {
   int dropAction = dtde.getDropAction();
   int sourceActions = dtde.getSourceActions();
   boolean acceptedDrag = false;
   if (!acceptableType || (sourceActions &DnDConstants.ACTION;_COPY_OR_MOVE) == 0)
   {
    dtde.acceptDrag(DnDConstants.ACTION_COPY);
    acceptedDrag = true;
   }
   else if ((dropAction & DnDConstants.ACTION_COPY_OR_MOVE ) == 0)
    {
     dtde.acceptDrag(DnDConstants.ACTION_COPY);
     acceptedDrag = true;
    }
   return acceptedDrag;
  }
  void checkTransferType(DropTargetDragEvent dtde)
  {
   acceptableType = dtde.isDataFlavorSupported(DataFlavor.stringFlavor);
  }
 }
 new CanvasDragSource();
 new CanvasDropTarget();
 }
}
class ComponentA extends JComponent
{
 Image img;
 JComponent comp;
 ComponentA(JComponent comp)
 {
  this.comp=comp;
  setVisible(false);
 }
 public void paintComponent(Graphics g)
 {
  img = createImage(comp.getWidth(),comp.getHeight());
  comp.paint(img.getGraphics());
  g.drawImage(img,0,0,this);
 }
}
jar-архив


Генри Бекет
"Java SOAP для профессионалов"
Подробнее>>
Заказать>>


Р. Р. Мухамедзянов
"Серверные приложения на языке Java"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!