本题的功能是监听鼠标的拖曳操作。窗口中有一个列表框。列表框中列出了当前日录的所有文件.鼠标选中一个或多个文件后拖曳出窗口,此操作的功能是将拖曳的文件复制一份在拖曳的目的目录下。 importjava.awt.*; importjava.awt.datatr

admin2013-12-02  23

问题 本题的功能是监听鼠标的拖曳操作。窗口中有一个列表框。列表框中列出了当前日录的所有文件.鼠标选中一个或多个文件后拖曳出窗口,此操作的功能是将拖曳的文件复制一份在拖曳的目的目录下。
importjava.awt.*;
importjava.awt.datatransfer.*;
importjavfl.awt.dnd.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.*;
importjavax.swing.*;
publicclassjava3
{
publicstaticvoidmain(String[]args)
{
JFrameframe=newDragSourceFrame(    );
frame.setDefauhClose(    )peration(JFrame.EXIT—
ON—CLOSE);
frame.show(    );
}
}
classDragSourceFrameextendsJFrame
{
publicDragSourceFrame(    )
{
setTitle(”java3”);
setSize(WlDTH.HEIGHT);
ContainercontentPane=getContentPane(    );
Filef=newFile(“.”).getabsoluteFile(    );
File[]files=f.1istFiles(    );
model=newDefaultListModel(    );
for(inti=0;i
try
{
model.addElement(files.getcanonicaIFile(    ));
}
catch(IOExceptionexception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
fileList=newJList(model);
contentPane.add(newJSerollPane(fileList),
BorderLayout.CENTER);
contentPane.add(newJLabel(“从列表中拖曳出文件”),
BorderLayout.N(    )RTH);
DragSoureedragsource=DragSource.getDefault__
Dragsource(    )}
dragSource.createDefauItDragGestureRecognizer
(fileList,
DnDConstants.ACTI(    )N__COPY__0R__
M(    )VE.new
DragGestureListener(    )
{
publicvoiddragGestureRecognized(
DragGestureEventevent)
{
draggedValues=fileList.getSelectedValues(    );
Transferabletransferable
=newFileListTransferable(draggedValues);
event.startDrag(null,transferable,
newFileListDragSourceListener(    ))1
}
});
}
privateclassFileListDragDourceListenerimple-
mentsDragSoureeAdapter

{
publicvoiddragDropEnd(DragSoureeDropEvente—
vent)
{
if(event.getDropSuecess(    ))
{
intaction—event.getDropAetion(    );
if(action==Dnl3(30nstants.ACTl0NM(    )VE)
{
for(inti=0;imodel.removeElement(draggedValues);
}
}
}
}
privateJListfileList;
privateDefauhListModelmodel;
privateObject[]draggedValues;
privatestaticfinalintWIDTH=300;
privatestaticfinalintHEIGHT=200;
}
classFileListTransferableimplementsTransferable
{
publicFileListTransferable((    )hject[]files)
{
fileList=newArrayList(Arrays.asList(files));
}
publicDataFlavor[]getTransferDataFlaV0rs(    )
{
returnflavors;
}
publicbooleanisDataFlavorSupported(DataFlavor
flavor)
{
returnArrays.asList(flavors).contains(flavor);
}
publicObjectgeITransferData(DataFlavorflavor)
throwsUnsupportedFlavorException
{
if(flavor.equals(DataFlavor.javaFileListFlavor))
returnfileList;
elseif(flavor.equals(DataFlavor.stringFlavor))
returnfileList.toString(    );
else
thrownewUnsupportedFIavorException(flavor);
}
privatestaticDataFlavor[]flavors=
{
DataFlavor.javaFileListFlavor。
DataFlavor.stringFlavor
};
privatejava.util.IAstfileList;
}

选项

答案第1处:Filef=newFile(“.”).getAbsoluteFile( )第2处:inti=0;i
解析 第1处是通过绝对路径创建一个Fjle对象f;第2处是files中f文件所在目录下的所有文件名列表,此处就是遍历这些文件名;第3处是定义了一个FileListDrag—SoureeListener类继承用于接收拖动源事件的抽象适配器类DragSourceAdapter。
转载请注明原文地址:https://kaotiyun.com/show/ELID777K
0

相关试题推荐
最新回复(0)