Java-реализация примера перетаскивания
Функция перетаскивания реализована в Swing. Код очень прост и имеет комментарии. Эффект от работы следующий:
Скопируйте код кода следующим образом:
пакет ком;
импортировать java.awt.*;
импортировать java.awt.datatransfer.DataFlavor;
импортировать java.awt.dnd.DnDConstants;
импортировать java.awt.dnd.DropTarget;
импортировать java.awt.dnd.DropTargetAdapter;
импортировать java.awt.dnd.DropTargetDropEvent;
импортировать java.io.File;
импортировать java.util.List;
импортировать javax.swing.*;
/**
* Простейший пример кода перетаскивания Java.
* @автор Лю Сяньань
* 24 января 2013 г.
*/
публичный класс DragTest расширяет JFrame
{
Панель JPanel;//Панель для перетаскивания
публичный DragTest()
{
панель = новая JPanel();
Panel.setBackground(Color.YELLOW);
getContentPane().add(панель, BorderLayout.CENTER);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 200);
setTitle("Простейший пример перетаскивания: перетащите файл ниже (20130124)");
drag();//Включаем перетаскивание
}
public static void main(String[] args) выдает исключение
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//Установим скин
новый DragTest().setVisible(true);;
}
public void drag()//определен метод перетаскивания
{
//Панель представляет собой элемент управления, который нужно перетащить
новый DropTarget(панель, DnDConstants.ACTION_COPY_OR_MOVE, новый DropTargetAdapter()
{
@Override
public void drop(DropTargetDropEvent dtde)//Перепишем метод удаления адаптера
{
пытаться
{
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))//Если формат перетаскиваемого файла поддерживается
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);//Получить перетаскиваемые данные
List<File> list = (List<File>) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
Строка temp="";
for(Файл файл:список)
temp+=file.getAbsolutePath()+";/n";
JOptionPane.showMessageDialog(null, temp);
dtde.dropComplete(true);//Указывает, что операция перетаскивания завершена
}
еще
{
dtde.rejectDrop(); // В противном случае отклонить перетаскиваемые данные
}
}
поймать (Исключение e)
{
е.printStackTrace();
}
}
});
}
}