目录
1 前言
2 旧版本选择文件
3 新版本选择文件
?4 核心代码
5 说明
6 GitHub
7 Gitee
8 参考链接
1 前言
由于之前的版本使用的是java.awt.FileDialog,在弹出的文件选择框中的地址栏处(查找范围(I):)不能直接粘贴文件夹路径,只能一步步点下去,老早就用不惯了,想改了(盘它),这次终于改好了,费了好一番功夫。
2 旧版本选择文件
3 新版本选择文件
4 核心代码
①修改mouseClickedChooseFiles方法:
// fileDialog.setVisible(true);
// File[] files = fileDialog.getFiles();
// 文件选择框:通过使用jna调用C++生成的dll来实现
java.util.List<File> files = getChooseFiles();
if (files.isEmpty()) {
return;
}
②新增getChooseFiles方法:
private java.util.List<File> getChooseFiles() {
System.setProperty(Constants.JNA_ENCODING, Constants.GBK);
String filesPath = DLL.dll.chooseFiles();
java.util.List<File> list = new ArrayList<>();
if (StringUtils.isBlank(filesPath) || Constants.FILE_SEPARATOR.equals(filesPath)) {
return list;
}
String[] strings = filesPath.split("\\*\\*\\*");
for (String str : strings) {
if (StringUtils.isBlank(str) || Constants.FILE_SEPARATOR.equals(filesPath)) {
continue;
}
list.add(new File(str));
}
return list;
}
③新增Constants类:
package cxzgwing.utils;
public class Constants {
public static final String FILE_SEPARATOR = "***";
public static final String JNA_ENCODING = "jna.encoding";
public static final String GBK = "GBK";
}
④新增DLL接口:
package cxzgwing.dll;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface DLL extends Library {
DLL dll = Native.load("choosefiles", DLL.class);
String chooseFiles();
}
⑤新增pom.xml中的依赖:
<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
⑥资源及项目文件目录结构:
5 说明
①dll文件我直接用的参考链接[1]中生成的。
②Java调用dll通过jna实现。
6 GitHub
cxzgwing/video-player: Java简易视频播放器 升级版 (github.com)
7 Gitee
cxzgwing/video-player (gitee.com)
8 参考链接
[1]?晨曦之光Wing.Java调用dll文件.2021-11-10 11:06:51
Java调用dll文件_晨曦之光Wing的博客-CSDN博客
|