Implementação Java de exemplo de arrastar e soltar
A função arrastar e soltar é implementada no Swing. O código é muito simples e tem comentários. O efeito de execução é o seguinte:
Copie o código do código da seguinte forma:
pacote com;
importar java.awt.*;
importar java.awt.datatransfer.DataFlavor;
importar java.awt.dnd.DnDConstants;
importar java.awt.dnd.DropTarget;
importar java.awt.dnd.DropTargetAdapter;
importar java.awt.dnd.DropTargetDropEvent;
importar java.io.File;
importar java.util.List;
importar javax.swing.*;
/**
* O exemplo de código Java mais simples de arrastar e soltar
* @autor Liu Xianan
* 24 de janeiro de 2013
*/
classe pública DragTest estende JFrame
{
Painel JPanel; //Painel para aceitar arrastar e soltar
DragTest público()
{
painel = novo JPanel();
painel.setBackground(Color.AMARELO);
getContentPane().add(painel, BorderLayout.CENTER);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 200);
setTitle("O exemplo mais simples de arrastar e soltar: arraste e solte o arquivo abaixo (20130124)");
drag(); //Ativa arrastar e soltar
}
public static void main(String[] args) lança exceção
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); //Definir a pele
new DragTest().setVisible(true);;
}
public void drag() // Método Drag definido
{
//Painel representa o controle a ser arrastado e solto
novo DropTarget(painel, DnDConstants.ACTION_COPY_OR_MOVE, novo DropTargetAdapter()
{
@Substituir
public void drop(DropTargetDropEvent dtde)//Reescreva o método drop do adaptador
{
tentar
{
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))//Se o formato do arquivo arrastado for suportado
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);//Recebe os dados arrastados
List<Arquivo> list = (List<Arquivo>) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
String temp="";
for (arquivo arquivo:lista)
temp+=arquivo.getAbsolutePath()+";/n";
JOptionPane.showMessageDialog(nulo, temp);
dtde.dropComplete(true);//Indica que a operação de arrastar e soltar foi concluída
}
outro
{
dtde.rejectDrop(); // Caso contrário, rejeita os dados arrastados
}
}
pegar (Exceção e)
{
e.printStackTrace();
}
}
});
}
}