ドラッグ アンド ドロップの 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.ファイルをインポートします。
java.util.Listをインポートします。
javax.swing.* をインポートします。
/**
* 最も単純な Java ドラッグ アンド ドロップ コードの例
* @著者Liu Xianan
* 2013 年 1 月 24 日
*/
パブリック クラス DragTest は JFrame を拡張します
{
JPanel panel;//ドラッグアンドドロップを受け入れるパネル
パブリック DragTest()
{
パネル = 新しい JPanel();
パネル.setBackground(Color.YELLOW);
getContentPane().add(パネル, BorderLayout.CENTER);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 200);
setTitle("最も単純なドラッグ アンド ドロップの例: 以下のファイルをドラッグ アンド ドロップします (20130124)");
rag();//ドラッグアンドドロップを有効にする
}
public static void main(String[] args) が例外をスローする
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//スキンを設定する
新しい DragTest().setVisible(true);;
}
public voidrag()//ドラッグメソッドが定義されています
{
//Panel はドラッグ アンド ドロップされるコントロールを表します
new DropTarget(パネル、DnDConstants.ACTION_COPY_OR_MOVE、new DropTargetAdapter()
{
@オーバーライド
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(ファイル file:リスト)
temp+=file.getAbsolutePath()+";/n";
JOptionPane.showMessageDialog(null, temp);
dtde.dropComplete(true);//ドラッグ アンド ドロップ操作が完了したことを示します
}
それ以外
{
dtde.rejectDrop(); // それ以外の場合は、ドラッグされたデータを拒否します
}
}
catch (例外 e)
{
e.printStackTrace();
}
}
});
}
}