解决Java实现鼠标拖放文件功能
用JSP实现拖拽上传文件和文件夹
用JSP实现拖拽上传文件和文件夹JSP(JavaServer Pages)是一种动态网页技术,允许将Java代码嵌入到HTML页面中。
拖拽上传文件和文件夹是一种常见的网页交互功能,可以使用JSP来实现。
在实现拖拽上传文件和文件夹功能之前,首先需要了解一下拖拽上传的基本原理。
在HTML中,可以通过Drag and Drop API来获取拖拽的文件和文件夹。
然后,可以使用JavaScript将拖拽的文件和文件夹发送到服务器端,服务器端可以使用JSP来处理这些文件和文件夹。
以下是一个基本的实现拖拽上传文件的JSP页面的示例:```htmlpageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>拖拽上传文件</title><script>function handleDrop(event)event.preventDefault(; // 禁止浏览器打开文件var files = event.dataTransfer.files;//遍历上传的文件for (var i = 0; i < files.length; i++)var file = files[i];// 创建FormData对象,用于发送文件到服务器var formData = new FormData(;formData.append("file", file);// 创建一个XMLHttpRequest对象,发送文件到服务器var xhr = new XMLHttpRequest(;xhr.open("POST", "upload.jsp", true);xhr.onreadystatechange = functioif (xhr.readyState == 4 && xhr.status == 200)//上传成功console.log(xhr.responseText);}};xhr.send(formData);}}</script></head><body ondragover="event.preventDefault(;"ondrop="handleDrop(event);"><h1>拖拽上传文件</h1><p>将文件拖拽到此处上传</p></body></html>```当文件被拖拽到页面的时候,`handleDrop(`函数会被调用。
swing_hacks_拖拽功能
对 dragGestureRecognized()的实现始于创建一个用于暂存文本的临时文 件。实际上,它首先是通过 File.createTempFile()而创建了一个假造的 临时文件,名叫 proxy_temp 。接着才在相同目录里创建实际的临时文件, 并把文本数据写入到临时文件中。读者完全可以跳过 proxy_temp 那部分 代码, 不过接下来如果用户把文件拖动到桌面, 他将不得不把文件名改为譬 如 myfile158392.txt 的形式,而不能使用 myfile.txt 。通过使用代理文件,读 者就能在保持文件位于临时目录的同时创建一个带有有用名字的文件。 在完成文件操作后,是时候创建图标了:
class FileDragGestureListener extends DragSourceAdapter implements DragGestureListener { JTextArea text; Cursor cursor; public FileDragGestureListener(JTextArea text) { this.text = text; }
某些操作系统支持拖动图像的概念。 拖动图像是一个小型图像, 它出现在拖 动过程中鼠标指针的下面。对 OS X 而言,拖动图像往往是文件图标的半透 明形式。Windows 不支持拖动图标,所以读者可以直接使用文件图标本身。 虽然这样的效果不好, 不过仍旧能为用户提供差不多的视觉效果。 在前面的 代码中,DragSource.isDragImageSupported()方法允许读者得知该使用 哪种途径。如果支持拖动图标,它在开始新的拖动时就会调用 evt.startDrag() 方法, 向其传入默认的复制图标、一个拖动图像、 指向拖 动图像的指针、一个面向临时文件的 Transferable 实例(后面有更详细 介绍)以及一个 DragSource 实例。FileDragGestureListener 只需要这些 输入,因为它还扩展了 DragSourceAdapter 类。如果不支持拖动图像,则 代码接着会根据图标创建定制的鼠标指针,并用这个新指针启动拖动操作。 一旦拖动操作开始执行, Swing 就将在用户每次移动鼠标指针进入或移出可 释放文件的区域时提供回调操作。 为了提供一个反馈说明文件是否可以释放 到某个指定位置上,读者必须重写 DragSourceAdapter 中的 dragEnter() 和 dragExit()方法,以便切换鼠标指针反映当前释放的目标:
JAVA模拟键盘鼠标操作
//可以在eclipse下直接运行的示例程序:package key_robot;import java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;public class key_robot {public key_robot() {}// 鼠标单击,要双击就连续调用private static void pressMouse(Robot r, int m, int delay) { r.mousePress(m);r.delay(10);r.mouseRelease(m);r.delay(delay);}// 键盘输入方法private static void pressKeys(Robot r, int[] ks, int delay) { for (int i = 0; i < ks.length; i++) {r.keyPress(ks[i]);r.delay(10);r.keyRelease(ks[i]);r.delay(delay);}}public static void main(String[] args) throws Exception { final Robot rb = new Robot();new Thread() {public void run() {rb.delay(2000); // 模拟回车rb.keyPress(KeyEvent.VK_ENTER);rb.keyRelease(KeyEvent.VK_ENTER);}}.start();JOptionPane.showMessageDialog(null,"以下程序自动执行,包括本对话框,点击运行后请不要移动鼠标和键盘.\n如果不能正常执行程序,请先关闭输入法");rb.delay(1500);// 设置开始菜单的大概位置int x = 40;int y = Toolkit.getDefaultToolkit().getScreenSize().height- 10; // 鼠标移动到开始菜单,rb.mouseMove(x, y);rb.delay(500);// 单击三次开始菜单for (int i = 0; i < 3; i++)pressMouse(rb, InputEvent.BUTTON1_MASK, 500);rb.delay(1000);// 运行CMD命令r cmd enterint[] ks = { KeyEvent.VK_R, KeyEvent.VK_C, KeyEvent.VK_M,KeyEvent.VK_D, KeyEvent.VK_ENTER, };pressKeys(rb, ks, 500);rb.mouseMove(400, 400);rb.delay(500);// 运行DIR命令dir enterks = new int[] { KeyEvent.VK_D, KeyEvent.VK_I, KeyEvent.VK_R, KeyEvent.VK_ENTER };pressKeys(rb, ks, 500);rb.delay(1000);// 运行CLS命令cls enterks = new int[] { KeyEvent.VK_C, KeyEvent.VK_L, KeyEvent.VK_S, KeyEvent.VK_ENTER };pressKeys(rb, ks, 500);rb.delay(1000);// 运行EXIT命令exit enterks = new int[] { KeyEvent.VK_E, KeyEvent.VK_X, KeyEvent.VK_I, KeyEvent.VK_T, KeyEvent.VK_ENTER };pressKeys(rb, ks, 500);rb.delay(1000);// 右键测试x = Toolkit.getDefaultToolkit().getScreenSize().width - 10;rb.mouseMove(x, y);// 如果是双键鼠标,请改用InputEvent.BUTTON2_MASK标pressMouse(rb, InputEvent.BUTTON3_MASK, 500);// 显示日期调整对话框apressKeys(rb, new int[] { KeyEvent.VK_A }, 1000);rb.delay(2000);pressKeys(rb, new int[] { KeyEvent.VK_ESCAPE }, 0);rb.delay(1000);new Thread() {public void run() {rb.delay(1000); // 回车rb.keyPress(KeyEvent.VK_ENTER);rb.keyRelease(KeyEvent.VK_ENTER);}}.start();JOptionPane.showMessageDialog(null, "演示完毕!");}}。
鼠标不能拖动文件
鼠标不能拖动文件1. 问题描述在使用计算机时,我们经常需要拖动文件或文件夹来进行操作,例如拷贝、剪切、粘贴等等。
然而,在某些情况下,我们会遇到鼠标不能拖动文件的问题。
本文将探讨可能导致鼠标不能拖动文件的原因,并提供相应的解决方法。
2. 原因分析2.1 鼠标设置问题如果鼠标不能拖动文件,首先应该检查鼠标设置是否正确。
以下是一些可能导致问题的设置:•鼠标速度过快:鼠标速度过快可能导致无法准确地拖动文件。
可以通过调整鼠标速度来解决该问题。
•鼠标按钮设置错误:某些鼠标可能具有额外的按键,如果错误地按下了这些按键,也有可能导致无法拖动文件。
在这种情况下,应检查鼠标设置,确保按钮功能正常。
2.2 系统设置问题除了鼠标设置之外,系统设置也可能导致鼠标不能拖动文件的问题。
以下是一些可能的系统设置问题:•拖放功能被禁用:在某些情况下,拖放功能可能会被禁用。
这可能是由于安全设置或管理员权限所致。
在这种情况下,您可以尝试启用拖放功能,或者联系系统管理员进行解决。
•文件权限问题:如果您无法拖动特定文件或文件夹,可能是由于您没有足够的权限来执行该操作。
确保您具有正确的文件权限,或与文件所有者联系以获取访问权限。
•文件损坏或损坏的系统文件:如果文件或系统文件损坏,可能会导致无法拖动文件。
在这种情况下,您可以尝试修复文件或系统文件,或者进行相应的故障排除。
3. 解决方法根据以上原因分析,我们可以采取以下措施来解决鼠标不能拖动文件的问题:•检查鼠标设置:打开鼠标设置,确保鼠标速度适中,并检查鼠标按钮功能是否正确。
•启用拖放功能:如果拖放功能被禁用,请按照以下步骤启用它:1.打开“控制面板”。
2.点击“外观和个性化”。
3.选择“文件资源管理器选项”。
4.在“常规”选项卡下,确保“启用拖放”选项被勾选。
5.点击“确定”保存更改。
•获取文件权限:如果您没有足够的权限来拖动文件,您可以联系文件所有者请求相应的访问权限。
•修复文件或系统文件:如果文件或系统文件损坏,可以尝试以下方法进行修复:–对于文件损坏的情况,可以尝试使用文件修复工具(如文件修复软件)来修复文件。
java,swt,拖拽完整例子
import org.eclipse.swt.SWT;import org.eclipse.swt.dnd.DND;import org.eclipse.swt.dnd.DragSource;import org.eclipse.swt.dnd.DragSourceEvent;import org.eclipse.swt.dnd.DragSourceListener;import org.eclipse.swt.dnd.DropTarget;import org.eclipse.swt.dnd.DropTargetAdapter;import org.eclipse.swt.dnd.DropTargetEvent;import org.eclipse.swt.dnd.FileTransfer;import org.eclipse.swt.dnd.TextTransfer;import org.eclipse.swt.dnd.Transfer;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.graphics.Rectangle;import yout.FillLayout;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import org.eclipse.swt.widgets.TableItem;import org.eclipse.swt.widgets.TreeItem;public class TestDNDTable {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubfinal Display display = new Display();Shell shell = new Shell(display);shell.setText("Table Test");shell.setBounds(100, 100, 200, 200);shell.setLayout(new FillLayout());final Table table = new Table(shell, SWT.SINGLE | SWT.BORDER| SWT.FULL_SELECTION | SWT.MULTI);table.setHeaderVisible(true);table.setLinesVisible(true);TableColumn nameColumn = new TableColumn(table, SWT.NULL);nameColumn.setText("name");nameColumn.pack();TableColumn ageColumn = new TableColumn(table, SWT.NULL);ageColumn.setText("age");ageColumn.pack();TableColumn sexColumn = new TableColumn(table, SWT.NULL);sexColumn.setText("sex");sexColumn.pack();TableItem item1 = new TableItem(table, SWT.NULL);item1.setText(new String[] { "Dan", "23","男" });TableItem item2 = new TableItem(table, SWT.NULL);item2.setText(new String[] { "Zhao", "33","女" });TableItem item3 = new TableItem(table, SWT.NULL);item3.setText(new String[] { "Tian", "21" ,"男"});TableItem item4 = new TableItem(table, SWT.NULL);item4.setText(new String[] { "Jia", "45","妖" });table.addSelectionListener(new SelectionListener() {@Overridepublic void widgetSelected(SelectionEvent e) {// TODO Auto-generated method stubTableItem[] selected = table.getSelection();if (selected.length > 0) {System.out.println("name " + selected[0].getText(0)+ " age " + selected[0].getText(1)+" sex"+selected[0].getText(2));}}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}});Transfer[] types = new FileTransfer[] { FileTransfer.getInstance() };int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;final DragSource source = new DragSource(table, operations);source.setTransfer(types);final TableItem[] dragSourceItem = new TableItem[1];source.addDragListener(new DragSourceListener() {public void dragStart(DragSourceEvent event) {TableItem[] selection = table.getSelection();if (selection.length > 0) {event.doit = true;dragSourceItem[0] = selection[0];} else {event.doit = false;}};public void dragSetData(DragSourceEvent event) {event.data = new String[] { dragSourceItem[0].getText(0),dragSourceItem[0].getText(1),dragSourceItem[0].getText(2) };}public void dragFinished(DragSourceEvent event) {if (event.detail == DND.DROP_MOVE)dragSourceItem[0].dispose();dragSourceItem[0] = null;}});DropTarget target = new DropTarget(table, operations);target.setTransfer(types);target.addDropListener(new DropTargetAdapter() {public void dragOver(DropTargetEvent event) {event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL;if (event.item != null) {TableItem item = (TableItem) event.item;Point pt = display.map(null, table, event.x, event.y);Rectangle bounds = item.getBounds();if (pt.y < bounds.y + bounds.height / 3) {event.feedback |= DND.FEEDBACK_INSERT_BEFORE;} else if (pt.y > bounds.y + 2 * bounds.height / 3) {event.feedback |= DND.FEEDBACK_INSERT_AFTER;} else {event.feedback |= DND.FEEDBACK_SELECT;}}}public void drop(DropTargetEvent event) {if (event.data == null) {event.detail = DND.DROP_NONE;return;}String[] text = (String[]) event.data;if (event.item == null) {TableItem item = new TableItem(table, SWT.NONE);item.setText(text);} else {TableItem item = (TableItem) event.item;Point pt = display.map(null, table, event.x, event.y);Rectangle bounds = item.getBounds();if (item != null) {TableItem[] items = table.getItems();int index = 0;for (int i = 0; i < items.length; i++) {if (items[i] == item) {index = i;break;}}if (pt.y < bounds.y + bounds.height / 3) {TableItem newItem = new TableItem(table, SWT.NONE,index);newItem.setText(text);} else if (pt.y > bounds.y + 2 * bounds.height / 3) {TableItem newItem = new TableItem(table, SWT.NONE,index + 1);newItem.setText(text);} else {TableItem newItem = new TableItem(table, SWT.NONE);newItem.setText(text);}}}}});shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}}}。
JAVA中实现剪切,复制,粘贴功能
JAVA中实现剪切,复制,粘贴功能2008-05-12 15:50要用到java.awt.datatransfer包中的Clipboard类import java.awt.*;import java.awt.event.*;import java.awt.datatransfer.*;public class Test extends Frame implements ActionListener { MenuBar menubar; Menu menu;MenuItem copy,cut,paste;TextArea text1,text2;Clipboard clipboard=null;Test(){ clipboard=getToolkit().getSystemClipboard();//获取系统剪贴板。
menubar=new MenuBar();menu=new Menu("Edit"); copy=new MenuItem("copy");cut=new MenuItem ("cut"); paste=new MenuItem ("paste");text1=new TextArea(20,20); text2=new TextArea(20,20);copy.addActionListener(this); cut.addActionListener(this);paste.addActionListener(this);setLayout(new FlowLayout());menubar.add(menu);menu.add(copy); menu.add(cut); menu.add(paste);setMenuBar(menubar);add(text1);add(text2);setBounds(100,100,200,250); setVisible(true);pack();addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}}public void actionPerformed(ActionEvent e){ if(e.getSource()==copy) //拷贝到剪贴板。
c#实现文件拖入和拖出(拖拽)
c#实现⽂件拖⼊和拖出(拖拽)C# WinForm下⼀步⼀步实现⽂件的拖⼊和拖出作者:Eaglet在WinForm实现⼀个类似资源浏览器的功能,需要实现将WinForm中列出的⽂件拖出到其他应⽤程序中或者从其他应⽤程序中将⽂件拖⼊到Winform应⽤中。
⽹上有⼀些⽂章介绍这种功能,但都⽐较零散,缺少⼀个完整的例⼦。
为此我编写了⼀个较完整的实现⽂件拖⼊和拖出的例⼦,并撰写此⽂⼀步步讲解如果实现类似功能。
步骤1 放置⼀个 ListView 到 Winform窗体中并初始化如下属性:listView.View = View.Details;listView.AllowDrop = true; 步骤2 撰写⼀个⽬录⽂件列表显⽰的函数/**//// <summary>/// List files in the folder/// </summary>/// <param name="directory">the directory of the folder</param>private void ListFolder(string directory){labelCurFolder.Text = directory;String[] fileList = System.IO.Directory.GetFiles(directory);listViewFolder.Items.Clear();listViewFolder.Columns.Clear();listViewFolder.Columns.Add("Name", 300);listViewFolder.Columns.Add("Size", 100);listViewFolder.Columns.Add("Time", 200);foreach (string fileName in fileList){//Show file nameListViewItem itemName = new ListViewItem(System.IO.Path.GetFileName(fileName));itemName.Tag = fileName;//Show file iconIconImageProvider iconImageProvider = new IconImageProvider(listViewFolder.SmallImageList,rgeImageList);itemName.ImageIndex = iconImageProvider.GetIconImageIndex(fileName);//Show file sizeSystem.IO.FileInfo fileInfo = new System.IO.FileInfo(fileName);long size = fileInfo.Length;String strSize;if (size < 1024){strSize = size.ToString();}else if (size < 1024 * 1024){strSize = String.Format("{0:###.##}KB", (float)size / 1024);}else if (size < 1024 * 1024 * 1024){strSize = String.Format("{0:###.##}MB", (float)size / (1024 * 1024));}else{strSize = String.Format("{0:###.##}GB", (float)size / (1024 * 1024 * 1024));}ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();subItem.Text = strSize;subItem.Tag = size;itemName.SubItems.Add(subItem);//Show file timesubItem = new ListViewItem.ListViewSubItem();DateTime fileTime = System.IO.File.GetLastWriteTime(fileName);subItem.Text = (string)fileTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"); ;subItem.Tag = fileTime;itemName.SubItems.Add(subItem);listViewFolder.Items.Add(itemName);}}上⾯代码中有⼀段显⽰图标的代码由于和拖动⽆关,我就不贴出来了,感兴趣可以下载完整的代码去看。
Java3D扩展鼠标交互功能的研究与实现
判 断鼠标点击动作 , 然后在获取点击 范围内所有 目 的列表后选择 目标对象进行操作 。结合具体实现的代码 阐述 了扩展 鼠 标
标交互功能 的一般性方法 , 继承 、 重载和改 写了 Jv D中相关的鼠标操作类 , aa 3 重点讲解 了实现过程 中技术难点 的解决 方案 ,
最后 阐明了此研究工作的价值。
现 Bo srSre 应 用模 式 ) rw e evr / 。在 Jv3 aa D中 , 以根据 用 户 可
个以上的 目标对象 , 默认 的条件 下 , 在 使用 鼠标选 取或 者拖
拽物体的动作 均 只对 最 近 的 目标对 象 起作 用 ( Z轴 坐标 最
的操作进 行实时的场 景变换 , 是 , 但 目前 它所提 供 的交互 手
一
2 J v 3 扩 展 鼠标 交 互功 能 的需 求 aaD
在 Jv3 aa D环境 中进行 操作 时 , 果在 显示 平 面上 同一 如 区域( Y轴坐标相 同或相近 , X, z轴坐标不 同) 存在 两个或两
个应用程序接 口, Jv 言在三维 领域 的扩展 ( 是 aa语 便于 实
关键词 : 人机交互 ; 计算机仿真 ; 现实 虚拟
中图分类号 :P 1 . T374 文献标识码 : B
S u y a d Re l a i n o h n e n e a tv o s t d n a i to fEn a c d I t r c i e M u e z
Jv 3 a a D.
KEYW ORDS: ma Hu n—c mp tr it r cin;C mp t rsmu ai n o u e n e a t o o u e i l t ;Vi u e i o r a ra t tl l y
java释放资源的方法
java释放资源的方法Java是一种高级编程语言,它的垃圾回收机制可以自动释放内存资源,但是在Java程序中还存在其他的资源需要手动释放。
例如,文件IO、网络连接、数据库连接等,在使用完毕后需要及时释放资源,否则会导致内存泄漏和性能问题。
本文将详细介绍Java中释放资源的方法。
一、文件IO的资源释放1.1 使用try-with-resources语句块在Java 7之后引入了try-with-resources语句块,可以自动关闭实现了AutoCloseable接口的资源。
示例代码如下:```javatry (BufferedReader br = new BufferedReader(newFileReader("file.txt"))) {String line = br.readLine();while (line != null) {System.out.println(line);line = br.readLine();}e.printStackTrace();}```在上述代码中,BufferedReader实现了AutoCloseable接口,在try-with-resources语句块中创建的BufferedReader对象会自动关闭。
1.2 使用finally语句块在Java 6之前无法使用try-with-resources语句块,需要使用finally 语句块手动关闭文件流。
示例代码如下:```javaBufferedReader br = null;try {br = new BufferedReader(new FileReader("file.txt"));String line = br.readLine();while (line != null) {System.out.println(line);line = br.readLine();}e.printStackTrace();} finally {if (br != null) {try {br.close();} catch (IOException e) {e.printStackTrace();}}}```在上述代码中,使用finally语句块关闭文件流,确保资源被释放。
Java 实现图片的拖动处理
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
(4)添加鼠标处理事件,代码如下所示。
class DragPicListener implements MouseInputListener
Java
图片的拖动在计算机中比较常见。本实例介绍用Java事件实现简单的图片的拖动功能。
(1)在【文件】菜单下选择【新建】|【类】命令,在弹出的对话框【新建Java类】中,创建DragPictureDemo.java文件,如图10-18所示。
图10-18新建Java类
(2)添加程序中要用到的程序包,代码如下所示。
{ //鼠标事件处理
Point p=new Point(0,0); //坐标点
public void mouseMoved(MouseEvent e){}
public void mouseDragged(MouseEvent e)
{
Point newP=SwingUtilities.convertPoint(jlPic,e.getPoint(),jlPic.getParent()); //转换坐标系统
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e)
{
p=SwingUtilities.convertPoint(jlPic,e.getPoint(),jlPic.getParent()); //得到当前坐标点
java listener几个功能例子 -回复
java listener几个功能例子-回复Java Listener 几个功能例子Java是一种功能强大的编程语言,旨在为开发人员提供灵活且可靠的解决方案。
其中一个重要的特性是监听器(Listener),它允许程序在特定事件发生时做出相应的反应。
本文将介绍几个常见的Java Listener功能例子,并逐步演示其实现过程。
写这篇文章时,将依次介绍以下功能例子:1. 窗口监听器(WindowListener): 当用户打开、关闭或最小化窗口时触发的事件。
2. 鼠标监听器(MouseListener): 当用户在GUI界面上进行鼠标点击操作时触发的事件。
3. 键盘监听器(KeyListener): 当用户在GUI界面上按下键盘按键时触发的事件。
下面将逐一介绍这些功能例子,并提供详细的实现步骤。
1. 窗口监听器(WindowListener)窗口监听器允许我们在窗口打开、关闭或最小化等事件发生时做出相应的反应。
要实现窗口监听器,我们可以创建一个实现WindowListener接口的类,并重写其方法。
首先,我们需要创建一个GUI窗口,可以使用Swing或JavaFX框架。
接下来,创建一个窗口监听器的实现类。
这个类应该继承WindowAdapter,它提供了对WindowListener接口的默认实现。
在窗口监听器实现类中,我们可以重写以下方法来响应窗口事件:- windowOpened(WindowEvent e):窗口打开时触发的事件。
- windowClosing(WindowEvent e):用户关闭窗口时触发的事件。
- windowIconified(WindowEvent e):窗口最小化时触发的事件。
以窗口关闭事件为例,可以按照以下步骤实现:1. 创建窗口监听器实现类,并重写windowClosing方法。
2. 在windowClosing方法中添加关闭窗口的逻辑,例如释放资源或保存数据。
文件拖放功能
实现应用程序的文件拖放功能时间:2008-04-09 04:17来源:互联网在Delphi中有许多控件支持拖放操作,但仅限于应用程序内部,而不能实现从Windows 环境里向应用程序拖放文件,本文将要介绍的就是如何用Delphi编写支持文件拖放的应用程序,由于主要使用WindowsAPI函数,因此也可供其它语言使用者参考. 首先要说明的是下面的三个API函数在Delphi中有许多控件支持拖放操作,但仅限于应用程序内部,而不能实现从Windows环境里向应用程序拖放文件,本文将要介绍的就是如何用Delphi编写支持文件拖放的应用程序,由于主要使用WindowsAPI函数,因此也可供其它语言使用者参考.首先要说明的是下面的三个API函数,为通用起见, 函数说明使用C语言格式,1.VOIDDragAcceptFiles(HWNDhWnd,BOOLfAccept);DragAcceptFiles函数是用来为拖放文件作初始化, 它的第一个参数hWnd 指明目标窗体的句柄,第二个参数fAccept是一个布尔型变量,为True时则hWnd所指向的窗体可以接受拖放的文件.2.UINTDragQueryFile(HDROPhDrop,UINTiFile,LPTSTRlpszFile,UINTcch)DragQueryFile函数用来查询拖放文件的文件名,其本身的返回值是一个无符号整数,参数hDrop是一个存放所拖放文件名称的数据结构的句柄, 也就是文件名缓冲区的句柄,需要从Windows消息WM_DROPFILES中获得.iFile指明所要查询文件的序号,它有两种取值方式,1.值为十六进制数FFFFFFFF时,DragQueryFile的返回值为所拖放文件的数目;2.值在0到拖放文件总数之间时,DragQueryFile函数将相应序号的文件名放入参数lpszFile所指向的缓冲区内,若此时lpszFile的值为NULL,则DragQueryFile会返回相应文件名的长度.参数cch决定缓冲区的长度,由于Windows95支持长文件名,它的值不能设得太小.3.VOIDDragFinish(HDROPhDrop);使用DragFinish函数告诉Windows拖放操作结束,使其释放文件名缓冲区,它的参数hDrop与DragQueryFiles函数中的一样,也由Windows消息WM_DROPFILES 的hDrop参数获得.下面将结合一个我编写的例子来说明具体的编程步骤.本例中窗体上放置了一个Memo控件memo1,在Windows中选取数个文件拖至程序窗体放下,则memo1中便会显示所选文件的总数及每个文件的各自名称.程序代码如下:unitUnit1;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Memo1:TMemo;procedureFormCreate(Sender:TObject);procedureLabel3Click(Sender:TObject);procedureLabel4Click(Sender:TObject);privatePROCEDUREFinishDropped(VARMsg:TMessage);MessageWM_DropFiles;{Privatedeclarations}public{Publicdeclarations}end;varForm1:TForm1;implementationusesshellapi;{$R*.DFM}pro ureTForm1.FormCreate(Sender:TObject);begin//initializethedragprocess;DragAcceptFiles(Handle,True);end;ProcedureTForm1.FinishDropped(VARMsg:TMessage);VarhDrop:THandle;iFile:Uint;lpszFile:pchar;CountOfFiles:integer;FileIndex:integer;ReSults:string;beginhDrop:=Msg.WParam;getmem(pchar,255);iFile:=$FFFFFFFF;CountOfFiles:=DragQueryFile(hDrop,iFile,lpszFile,254); ReSults:=;forFileIndex:=0CountOfFiles-1dobeginiFile:=FileIndex;DragQueryFile(hDrop,iFile,lpszFile,254);//GettheFilenamesbyorder;ReSults:=ReSults #13#10 lpszFile;end;Dispose(lpszFile);memo1.Clear;memo1.lines.add(拖放了 IntToStr(CountOfFiles) 个文件: ReSults);DragFinish(hDrop);end;end.从以上代码可以看出,首先应该在窗体的OnCreate事件中用DragAccepteFiles来说明程序窗体支持文件的拖放.另外,除了调用以上3个API函数,在Delphi中还应编写针对WM_DROPFILES 的消息处理过程FinishDropped,截取了WM_DROPFILES,由其wParam 才能够得到文件名缓冲区的句柄.在FinishDropped过程里,有两处DragQueryFile 函数,第一处其iFile参数为$FFFFFFFF,得到拖放文件的总数;第二处iFile参数为每个文件的序号,则可在lpszFile中可得到相应的文件名.当然,为了明显的对比iFile的值对DragQueryFile 函数的影响,这里的代码不够简练.有一点需要注意的是,lpszFile是Pchar型的变量,为了程序运行安全,它使用前需用getmem过程为其分配内存,使用后再用dispose过程将其释放. 在FinishDropped过程的最后,用DragFinish函数释放文件名缓冲区.以上范例代码在Delphi4中通过.VC6.0中实现文件拖拽- -我们经常使用到文件拖拽的方法,来对某一个或者某一些文件进行操作。
java move方法(一)
java move方法(一)Java Move简介Java是一种流行的编程语言,具有广泛的应用领域。
在Java中,我们经常需要对文件或目录进行移动操作。
本文将详细介绍Java中各种方法和技巧来实现文件和目录的移动。
方法一:使用File类的renameTo()方法File类是Java中用于操作文件和目录的基本类,它提供了renameTo()方法来实现文件和目录的重命名和移动。
File file = new File("");File newFile = new File("");boolean result = (newFile);需要注意的是,使用renameTo()方法可以移动文件或目录,但不能跨分区移动文件。
方法二:使用Files类的move()方法Java 7引入了更方便的移动文件和目录的方法,通过Files类的move()方法实现。
Path source = ("");Path target = ("");(source, target);move()方法可以实现文件和目录之间的移动,并且支持跨分区移动。
方法三:使用Apache Commons IO库Apache Commons IO是一个流行的Java开发库,提供了许多有用的文件操作工具。
它提供了FileUtils类,可以方便地实现文件和目录的移动。
File source = new File("");File target = new File("");(source, target);需要注意的是,使用Apache Commons IO库需要添加相应的依赖。
方法四:使用NIO库的Files类Java的NIO库提供了Files类来处理文件和目录,它也提供了move()方法来实现移动操作。
Path source = ("");Path target = ("");(source, target, _EXISTING);move()方法还可以指定一些选项,例如REPLACE_EXISTING用于覆盖目标文件。
文件资源管理器中用鼠标拖放文件或文件夹实现的功能
文件资源管理器中用鼠标拖放文件或文件夹实现的功
能
1. 复制文件或文件夹:通过鼠标将文件或文件夹拖放到目标位置,按住Ctrl 键,松开鼠标即可完成复制操作。
2. 移动文件或文件夹:通过鼠标将文件或文件夹拖放到目标位置,松开鼠标即可完成移动操作。
3. 创建快捷方式:通过鼠标将文件或文件夹拖放到目标位置,按住Alt 键,松开鼠标即可创建快捷方式。
4. 合并文件夹:将一个文件夹拖放到另一个文件夹上,选择“合并文件夹”选项,即可将两个文件夹中的内容合并到一个文件夹中。
5. 压缩文件或文件夹:将文件或文件夹拖放到压缩文件或文件夹上,即可将其压缩成一个压缩文件。
6. 解压缩文件或文件夹:将压缩文件或文件夹拖放到目标位置,即可将其解压缩。
7. 拖放改变文件顺序:选中需要拖放的文件,按住鼠标左键不放,将鼠标拖动到目标位置,松开鼠标即可改变文件顺序。
8. 复制路径:选中文件或文件夹,在按住Shift 键时,右键菜单中会出现“复制为路径”选项,即可复制该文件或文件夹的路径。
9. 删除文件或文件夹:选中需要删除的文件或文件夹,将其拖放到“回收站”图标上即可删除。
《计算机应用基础》统考题库2
一、单选题(共110题)1. 为解决某一特定的问题而设计的指令序列称为(D)。
D. 程序2. 用户第一次进入WIN7操作系统时,桌面上默认只有一个(A)图标。
A. 回收站3. 当前输出速度最快的打印机是(C)。
C. 激光打印机4. 下述(D)不是Windows 7系统新增的特色。
D. 即插即用5. 在Word的编辑状态,进行字体设置操作后,按新设置的字体显示的文字是(B)。
B. 文档中被选择的文字6. Excel 2010,工作表区域较大时,可通过(C)命令将窗口分为两个窗口,以便同时看到工作表不同区域内容。
C. “视图”-“窗口”组“拆分”7. 以下有关创建快捷方式的方法不正确的是(D)。
D. 直接右键单击该项目,然后选择“发送到”-“指定位置”。
8. 下列有关利用有线电视网和电缆调制解调技术(Cable MODEM)接入互联网的优点的叙述中,错误的是(A)A. 每个用户独享带宽且速率稳定9. 下列关于超文本的叙述,错误的是(B)。
B. 超文本采用线性结构组织信息10. 文件的类型可以根据(C)来识别。
C. 文件的扩展名11. 某区域由A1,A2,A3,B1,B2,B3六个单元格组成,下列不能表示该区域的是(D)。
D. A1:B112. 下列WORD功能叙述错误的是(A)。
A. 可以对WORD文档中的表格数据进行排序,但不能进行数据计算B. 利用WORD软件可以绘制图形13. 存放一幅1024*768像素的未经压缩的真彩色(24位)图像,大约需要(B)字节的存储空间B. 1024*768*214. USB 接口是由Compag 、IBM 、Intel 、Microsoft 和NEC 等公司共同开发的一种I/O 接口。
下列有关USB 接口的叙述错误的是(C)。
C. 利用“ USB 集线器”,一个USB 接口最多只能连接63 个设备15. 在PowerPoint 2010中,下列有关复制幻灯片的说法,错误的是(D)。
Java中的鼠标事件和键盘事件
Example18_9/10.java
键盘事件
键盘事件:
按下 释放 敲击键盘上一个键
事件源获得监视器的方法是 addKeyListener(监视器) addKeyListener(监视器) 处理事件源发生事件的接口是 KeyListener,其中方法: KeyListener,其中方法:
keyPressed(KeyEvent e) keyTyped(KeyEvent e):键被按下又释 e):键被按下又释 放时被调用 keyReleased(keyEvent e)
使用MouseListener接口处理鼠 使用MouseListener接口处理鼠 标事件
事件源获得监视器的方法是 addMouseListener(监视器) addMouseListener(监视器) 处理事件源发生事件的接口是 MouseListener,其中方法: MouseListener,其中方法:
mouseDragged(MouseEvent):负责处理鼠标拖 mouseDragged(MouseEvent):负责处理鼠标拖 动事件 MouseMoved(MouseEvent) :负责处理鼠标移动 事件
Example18_6/7.java
控制鼠标的指针形状
可使用setCursor方法,如设置成漏斗: 可使用setCursor方法,如设置成漏斗:
Example18_1/2/3/4/5.java
使用MouseMotionListener接口 使用MouseMotionListener接口 处理鼠标事件
事件源发生的鼠标事件:
拖动鼠标 鼠标移动(鼠标键不按下)
鼠标事件的类型是MouseEvent 鼠标事件的类型是MouseEvent 事件源获得监视器的方法是 addMouseMotionListener(监视器) addMouseMotionListener(监视器) 处理事件源发生事件的接口是 MouseMotionListener,其中方法: MouseMotionListener,其中方法:
超简单的java获取鼠标点击位置坐标的实例(鼠标在Jframe上的坐标)
超简单的java获取⿏标点击位置坐标的实例(⿏标在Jframe上的坐标)1. 在窗⼝的最上⽅放置⼀个JLabel标签,标签中的⽂本默认为“此处显⽰⿏标右键点击的坐标”2. 为Jframe窗⼝添加⼀个⿏标事件,当⿏标右键点击窗⼝时,⿏标的坐标在JLabel标签中显⽰。
java 代码实现import java.awt.FlowLayout;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;import javax.swing.JLabel;public class Jframe_1 {public static void main(String[] args) {JFrame jf = new JFrame("Jframe");jf.setLayout(new FlowLayout());jf.setSize(300,200); //设定窗体的宽和⾼jf.setVisible(true); // 设定窗⼝为可见jf.setLocation(800,200); // 设定窗体的坐标JLabel lb = new JLabel("此处显⽰⿏标右键点击后的坐标"); // 创建⼀个 Label对象jf.add(lb); // 添加标签到窗⼝上jf.addMouseListener(new MouseListener() { //为窗⼝添加⿏标事件监听器@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stubif(e.getButton()==e.BUTTON3){ // 判断获取的按钮是否为⿏标的右击lb.setText(e.getX()+","+e.getY()); // 获得⿏标点击位置的坐标并发送到标签的⽂字上}}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}});}}运⾏结果如下:java获取⿏标在Jframe上点击的位置坐标实例⾮常简单易懂,希望对初学者有所帮助。
java常用快捷键
java常用快捷键java常用快捷键Java是一门面对对象的编程语言,不仅汲取了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简洁易用两个特征。
以下是我整理的java常用快捷键,盼望能够关心到大家。
java常用快捷键1Eclipse中有如下一些和编辑相关的快捷键。
编辑快捷键1. 【ALT+/】此快捷键为用户编辑的好帮手,能为用户供应内容的帮助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。
2. 【Ctrl+O】显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时特别有用。
3. 【Ctrl+/】快速添加解释,能为光标所在行或所选定行快速添加解释或取消解释,在调试的时候可能总会需要解释一些东西或取消解释,现在好了,不需要每行进行重复的解释。
4. 【Ctrl+D】删除当前行,这也是笔者的最爱之一,不用为删除一行而按那么多次的删除键。
5. 【Ctrl+M】窗口最大化和还原,用户在窗口中进行操作时,总会觉得当前窗口小(尤其在编写代码时),现在好了,试试【Ctrl+M】快捷键。
查看和定位快捷键在程序中,快速定位代码的位置,快速找到Bug的所在,是特别不简单的事,Eclipse供应了强大的查找功能,可以利用如下的快捷键关心完成查找定位的工作。
1. 【Ctrl+K】、【Ctrl++Shift+K】快速向下和向上查找选定的内容,从今不再需要用鼠标单击查找对话框了。
2. 【Ctrl+Shift+T】查找工作空间(Workspace)构建路径中的可找到Java类文件,不要为找不到类而苦痛,而且可以使用“*”、“?”等通配符。
3. 【Ctrl+Shift+R】和【Ctrl+Shift+T】对应,查找工作空间(Workspace)中的全部文件(包括Java文件),也可以使用通配符。
4. 【Ctrl+Shift+G】查找类、方法和属性的引用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
dropTarget.setTransfer(new Transfer[] { TextTransfer.getInstance()});
//注册目标对象的事件处理
if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
//获得数据源设置的字符串
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
}
}
public void dragFinished(DragSourceEvent event) {
event.detail = DND.DROP_COPY;
}
public void dragOperationChanged(DropTargetEvent event) {
import yout.*;
import org.eclipse.swt.widgets.*;
public class DragTree {
public static void main(String[] args) {
}
});
//定义拖放目标对象
DropTarget dropTarget = new DropTarget(tree, DND.DROP_MOVE | DND.DROP_DEFAULT |DND.DROP_COPY);
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
event.data = tree.getSelection()[0].getText(0);
event.doit = false;
}
public void dragSetData(DragSourceEvent event) {
if (event.detail == DND.DROP_DEFAULT)
event.detail = DND.DROP_COPY;
}
return;
//首先获得目标对象中拖拽的树节点
TreeItem eventItem = (TreeItem) event.item;
//创建一个树对象
final Tree tree = createFolderTree(shell);
//定义拖放源对象
Source dragSource = new DragSource(tree, DND.DROP_MOVE |DND.DROP_COPY);
}
//当松开鼠标时触发的事件
public void drop(DropTargetEvent event) {
if (event.item == null)
dragSource.addDragListener(new DragSourceListener() {
public void dragStart(DragSourceEvent event) {
if (tree.getSelectionCount() == 0)
public void dragOver(DropTargetEvent event) {
event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SELECT;
&nbs
解决Java实现鼠标拖放文件功能.txt看一个人的的心术,要看他的眼神;看一个人的身价,要看他的对手;看一个人的底牌,要看他的朋友。明天是世上增值最快的一块土地,因它充满了希望。import java.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.*;
dropTarget.addDropListener(new DropTargetListener() {
public void dragEnter(DropTargetEvent event) {
if (event.detail == DND.DROP_DEFAULT)
//设置传输的数据为文本型String类型
dragSource.setTransfer(new Transfer[] { TextTransfer.getInstance()});
//注册拖放源时的事件处理