JFileChooser如何选择多个文件,再如何得到这些文件的路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFileChooser如何选择多个文件,再如何得到这些文件的路径相关的知识,希望对你有一定的参考价值。
是多个文件
JFileChooser jfilechooser = new JFileChooser();jfilechooser.setMultiSelectionEnabled(true);//最重要一句,启用多选
jfilechooser.showOpenDialog(null);
System.out.println(jfilechooser.getSelectedFiles()[0].getAbsolutePath()+"\n"+jfilechooser.getSelectedFiles()[1].getAbsolutePath());//通过getSelectedFiles()获取一个file数组,然后遍历getAbsolutePath()取出绝对路径即可 参考技术A JFileChooser jfc = new JFileChooser();jfc.setFileSelectionMode(JFileChooser.MULTI_SELECTION_ENABLED_CHANGED_PROPERTY);int nRetVal = jfc.showOpenDialog(this);if (nRetVal == JFileChooser.APPROVE_OPTION) File[] files = jfc.getSelectedFiles();
如何在 JFileChooser 中显示文件的默认系统图标?
【中文标题】如何在 JFileChooser 中显示文件的默认系统图标?【英文标题】:How to display default system icon for files in JFileChooser? 【发布时间】:2013-07-11 21:21:28 【问题描述】:如何显示JFileChooser
中文件的默认系统图标?即JFileChooser
中文件的图标应该与桌面和资源管理器中出现的图标相同?
例如,NetBeans 图标在JFileChooser
中的显示与在桌面上显示的不同!
如何做到这一点?
【问题讨论】:
如果它有助于解决问题,请accept 回答。对于earlier questions 中的许多人来说,情况大致相同。当然,注意到该页面中没有答案的那个,总是可以选择删除它(或将其标记为删除)。 【参考方案1】:我们可以使用FileSystemView
类并通过在其中调用getFileSystemView()
静态方法来获取它的对象,然后使用getSystemIcon()
方法获取File
对象并返回它的图标。
FileSystemView
和 FileView
类存在于 javax.swing.filechooser
包中。
File
类在 java.io
包中。
注意: FileSystemView
不会扩展 FileView
。因此,您不能在 jf.setFileView()
中使用 FileSystemView
对象
JFileChooser jf=new JFileChooser();
jf.setFileView(new MyFileView());
jf.showOpenDialog(this);
class MyFileView extends FileView
public Icon getIcon(File f)
FileSystemView view=FileSystemView.getFileSystemView();
return view.getSystemIcon(f);
this
表示当前帧。假设写这段代码的类是JFrame
的子类
或者用一种简单的方式,
jf.setFileView(new FileView()
public Icon getIcon(File f)
return FileSystemView.getFileSystemView().getSystemIcon(f);
);
【讨论】:
【参考方案2】:@JavaTechnical 展示的方式是一种方式。这是另一种(更简单)的方法。将 GUI(或至少文件选择器)设置为原生 PLAF。例如
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class FileChooserIcons
public static void main(String[] args)
Runnable r = new Runnable()
@Override
public void run()
try
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
catch(Exception e)
e.printStackTrace();
// the GUI as seen by the user (without frame)
JPanel gui = new JPanel(new BorderLayout());
gui.setBorder(new EmptyBorder(20, 30, 20, 30));
JButton browse = new JButton("Show File Chooser");
final JFrame f = new JFrame("File Chooser");
ActionListener showChooser = new ActionListener()
JFileChooser jfc = new JFileChooser();
@Override
public void actionPerformed(ActionEvent e)
jfc.showOpenDialog(f);
;
browse.addActionListener(showChooser);
gui.add(browse);
f.add(gui);
// Ensures JVM closes after frame(s) closed and
// all non-daemon threads are finished
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// See http://***.com/a/7143398/418556 for demo.
f.setLocationByPlatform(true);
// ensures the frame is the minimum size it needs to be
// in order display the components within it
f.pack();
// should be done last, to avoid flickering, moving,
// resizing artifacts.
f.setVisible(true);
;
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
当然,如果您有勇气,您可以创建一个自定义文件选择器,以 File Browser GUI 之类的开头。
【讨论】:
嗯。那很好!如果我想改变外观和感觉怎么办,说我喜欢 NimbusLookAndFeel! ;) @JavaTechnical “我喜欢 NimbusLookAndFeel” 你喜欢 bug? Nimbus 是有史以来开发的漏洞最多的 PLAF 之一。 ..这是在说些什么! +1 好的。顺便说一句,您对它的外观和定制方式有何看法? :) 嗯..我对此没有强烈的意见或感受。我从未尝试过自定义JFileChooser
(除了明显的“PLAF”)。
我热烈地记得那个程序和它的发展! 1+以上是关于JFileChooser如何选择多个文件,再如何得到这些文件的路径的主要内容,如果未能解决你的问题,请参考以下文章
java JFileChooser 选择文件时,文件很多的时候如何能进行日期排序,便于查找想要选择的文件
用JFileChooser选择多个多文件,然后要显示这些文件的路径在JTextArea里。这段代码是啥?
如何使用 JFileChooser 保存 file.txt?