简答题:本题的功能是监听鼠标的拖曳操作。窗口中有一个列表框,列表框中列出了当前目录的所有文件,鼠标选中一个或多个文件后拖曳出窗口

  • 题目分类:Java
  • 题目类型:简答题
  • 查看权限:VIP
题目内容:
本题的功能是监听鼠标的拖曳操作。窗口中有一个列表框,列表框中列出了当前目录的所有文件,鼠标选中一个或多个文件后拖曳出窗口,此操作的功能是将拖曳的文件复制一份在拖曳的目的目录下。
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++)
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;
参考答案:
答案解析:

下列叙述中,错误的是(  )。

下列叙述中,错误的是(  )。 A.Jbutton类和标签类可显示图标和文本 B.Button类和标签类可显示图标和文本 C.AWT构件能直接添加到顶层容器中

查看答案

What Can we learn from thepassage?

What Can we learn from thepassage?A.Both festivals are in May. B.Hand—made gifts

查看答案

在VBA中,下列关于过程的描述中正确的是(  )。

在VBA中,下列关于过程的描述中正确的是(  )。 A.过程的定义可以嵌套,但过程的调用不能嵌套 B.过程的定义不可以嵌套,但过程的调用可以嵌套 C.过程的定义

查看答案

On Mother’s Day and Father’s Day__________.

On Mother’s Day and Father’s Day__________. A.people usually have familyparties

查看答案

窗体中有3个命令按钮,分别命名为Commandl、Command2和Command3。当单击Commandl按钮时,Co

窗体中有3个命令按钮,分别命名为Commandl、Command2和Command3。当单击Commandl按钮时,Command2按钮变为可用,Command

查看答案