题库 题库

【简答题】

本题的功能是监听鼠标的拖曳操作。窗口中有一个列表框,列表框中列出了当前目录的所有文件,鼠标选中一个或多个文件后拖曳出窗口,此操作的功能是将拖曳的文件复制一份在拖曳的目的目录下。
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class java3
{
public static void main(String[]args)
{
JFrame frame=new DragSourceFrame();
frame.setDefauhCloseOperation(JFrame.EXIT_
0N_CLoSE);
frame.show();
}
}
class DragSoureeFrame extends JFrame
{
public DragSourceFrame()
{
setTitle("java3");
setSize(WlDTH,HElGHT);
Container contentPane=getContentPane();
File f=new File(".").getabsoluteFile();
File[]files=f.listFiles();
model=new DefaultListModel();
for(int i=0;i<FILES.LENGTH();I++< u>)
try
{
model.addElement(files[i].getCanonicalFile());
}
catch(IOException exception)
{
JOptionPane.showMessageDialog(this,exeep-
tion);
}
fileList=new JList(model);
contentPane.add(new JScrollPane(fileList),
BorderLayout.CENTER);
contentPane.add(new JLabel("从列表中拖曳出文
件"),
BorderLayout.NoRTH);
DragSource dragSource=DragSource.getDefauh-
DragSource();
dragSource.createDefaultDragGestureRecognizer
(fileList,
DnDConstants. ACTION_COPY_0R_
MOVE,new
DragGestureListener()
{
public void dragGestureRecognized(
DragGestureEvent event)
{
draggedValues=fileList.getSelectedValues();
Transferable transferable
=new FiteListTransferable(draggedValues);
evenr.startDrag(null,transferable,
new FileListDragSourceListener());
}
});
}
private class FileListDragSourceListener imple-ments DragSourceAdapter
{
public void dragDropEnd(DragSourceDropEvent e-
vent)
{
if(event.getDropSuccess())
{
int action=event.getDropAction();
if(action= =DnDConstants.ACTl0N MOVE)
{
for(int i=0;i<DRAGGEDVALUES.LENGTH;I++)
model.removeElement(draggedValues[i]);
}
}
}
}
private JList fileList;
private DefauhListModel model;
private Object[]draggedValues;
private static final int WIDTH=300;
private static final int HEIGHT=200;
}
class FileListTransferable implements Transferable
{
public FileListTransferable(Object[]files)
{
fileList=new ArrayList(Arrays.asList(files));
}
public DataFlavor[]getTransferDataFlavors()
{
return flavors;
public boolean isDataFlavorSupported(DataFlavor
flavor)
{
return Arrays. asList(flavors), contains(flavor) ;
}
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException
if(flavor, equals(DataFlavor, javaFileListFlavor) )
return fileList;
else if(flavor, equals(DataFlavor, stringFlavor))
return fileList, toString() ;
else
throw new UnsupportedFlavorException(flavor) ;
}
private static DataFlavor[] flavors =
{
DataFlavor. j avaFileListFlavor,
DataFlavor. stringFlavor
};
private java. util. List fileList;

参考答案

第1处:FilE F—nEw FilE(".").GEtABsolutEFilE()
第2处:int i=0;i<FilEs.lEnGth;i++
第3处:privAtE ClAss FilEListDrAGSourEEListEnEr Ex-tEnDs DrAGSourCEADAptEr

相关试题

单选题 下列选项成员变量声明正确的是(  )。 查看答案
单选题 设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k相等的元素,比较的次数分别是s和b,在查找不成功情况下s和b的关系是( )。 查看答案
单选题 对于给出的一组权w={10,12,16,21,30},通过霍夫曼算法求出的扩充二叉树的带权外部路径长度为(  )。 查看答案
单选题 下列关于Java语言特点的叙述中,错误的是(  )。 查看答案
单选题 下列操作中,不属于Applet安全限制的是(  )。 查看答案
单选题 代码System.out.println(066)的输出结果是(  )。 查看答案
单选题 Java语言中如果要使用某个包中的类时,需要使用 (  )导人。 查看答案
单选题 在Java中,若要使用一个包中的类时,首先要求对该包进行导入,其关键字是(  )。 查看答案
单选题 假设用一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有的元素个数为(  )。 查看答案
单选题 下列代码中的内部类名是(  )。
import java.awt.event.*;
lapoct javax.swin9.*;
class TalkingClock(
public void start(int interval,final boolean beep){
ActionListener listener=new
ActionListener(){
public void actionPerformed(ActionEvent e-
vent){

}
}
Timer t=new Timer(interval,listener);
start();
}
}
查看答案
单选题 在Java语言中,封闭是借助于(  )实现的。 查看答案
单选题 数据流程图(DFD图)是(  )。 查看答案
单选题 当启动Applet程序时,首先调用的方法是(  )。 查看答案
单选题 下列标识符(名字)命名原则中,正确的是(  )。 查看答案
单选题 下面程序段的输出结果是(  )。
public class Test{
public static void main(String args[]){
int X,y;
x=(int)Math.sqrt(5)/2+(int)Math.random()*5/2;
y=(int)Math.sqrt(3)/2+(int)Math.random()*3/2;
if(x>v)
System.OUt.println("x>y");
elseif(x= =y)
System.out.println("x=Y");
else
System.out.println("x
}
}
查看答案
单选题 Java对I/O访问所提供的同步处理机制是(  )。 查看答案
单选题 下面for循环语句的执行结果是(  )。
for(int j=10;j>3;j--)
if(j%3 1=O)
j--;
--j;
--j;
System.OUt.println(j);
}
查看答案
单选题 需求分析阶段的任务是(  )。 查看答案
单选题 下列程序片段中,能通过编译的是(  )。 查看答案
单选题 下列叙述中,错误的是(  )。 查看答案