你这个复杂了,我稍微说说吧。
进度条稍微简单点,你就去看看Oracle的tutorial就行了,记得运用科学(或者不用?)
拖拽不是一下能写出来的,我随便拉了一个例子,你研究下:
final class FileDropHandler extends TransferHandler {@Override
public boolean canImport(TransferHandler.TransferSupport support) {
for (DataFlavor flavor : support.getDataFlavors()) {
if (flavor.isFlavorJavaFileListType()) {
return true
}
}
return false
}
@Override
@SuppressWarnings("unchecked")
public boolean importData(TransferHandler.TransferSupport support) {
if (!this.canImport(support))
return false
List<File> files
try {
files = (List<File>) support.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor)
} catch (UnsupportedFlavorException | IOException ex) {
// should never happen (or JDK is buggy)
return false
}
for (File file: files) {
// do something...
}
return true
}
}
用的时候:
myComponent.setTransferHandler(new FileDropHandler())String path = nullJFileChooser fc = new JFileChooser()
fc.setDialogTitle("请选择要上传的文件...")
fc.setApproveButtonText("确定")
fc.setFileSelectionMode(JFileChooser.FILES_ONLY)
if (JFileChooser.APPROVE_OPTION == fc.showOpenDialog(this)) {
path=fc.getSelectedFile().getPath()
}
最后path 中的值就是选中的那个文件的路径,然后就是IO *** 作了。
那个this一般是指当前Frame或Panel,传入一个Component也可以
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)