javaSwing和javaFx都可以用来写GUI图形化界面,最近也是因为工作需要学习了相关的技术,并且就文件选择器进行了对比,总体来说swing的文件选择界面比较老气,fx的界面比较符合当下,但是感觉fx使用的人比swing的人还要少(笔者学习的时候网上就fx的参考文档少之又少,纯讨论)
首先说下fx使用中我发现的优点:
1、文件选择界面符合当下审美,不老气。
2、使用较为简单,两三行代码即可实现文件框弹出选择获取路径操作。
3、文本框显示超过当前界面会自动有滚动条,swing需要去配置。
缺点:
1、给按钮设置具体对应的位置比较繁琐,xyz轴到现在都还没理清,笔者是设置一次运行一次看位置是否正确。
以下是软件界面,分为一个展示上传路径和保存成功否的提示区和一个按钮:
首先说几点注意事项:
1、通过primaryStage.setResizable(false)设置客户端界面大小固定。
2、通过textArea.setEditable(false)设置文本区不可编辑状态。
以下是按钮绑定事件代码:
buttonLoad.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent arg0) {
FileChooser fileChooser = new FileChooser();
//设置文件上传类型
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("excel files (*.xlsx)", "*.xlsx");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showOpenDialog(primaryStage);
textArea.appendText( "\n"+"你选择的文件路径为:"+file.getPath());
// 业务逻辑代码
FileChooser fileChooserSave = new FileChooser();
//保存文件类型
FileChooser.ExtensionFilter extFilter1 = new FileChooser.ExtensionFilter("excel files (*.xlsx)", "*.xlsx");
fileChooserSave.getExtensionFilters().add(extFilter1);
File fileSave = fileChooserSave.showSaveDialog(primaryStage);
textArea.appendText( "\n"+"你保存的文件路径为:"+fileSave.getPath());
}
获取文件,通过创建文件输入流,获取文件并且操作业务逻辑,再弹出保存框获取用户需要保存的路径,最后通过输出流输出,可以参考javaSwing 的业务方式:
两种不同的方式各有利弊,适合自己的才是最好的。