第二个Issue的进度很怪,谈不上快还是慢,事实是从网上找了好久找到了一些相关的例子,以此,可以初步作出一个符合要求的"Add image preview window to JFileChooser. add an Image Filter, only image file can be choosed. "
例子来自网上,图片预览控件借助JFileChooser.setAccessory(JComponent newAccessory)添加,JFileChooser类封装得死死的,什么也挖不出来,先后找到了FileFilter、FileSystemView、FileView,借此实现了针对任意扩展名的Filter,Filter解决得差不多,反过来image preview又需要完善了,希望呈现一种windows环境中文件浏览器可以提供的所谓Thumbnails(缩略图),回过头去狂查JFileChooser,不知该从哪里入手,先后在FileView(用图片本身代替文件固有图标)和FileSystemView(借用系统本身标准文件系统的图标)中找到一些有用的东西,二者互助实现了稍微好一点的缩略图策略,当然我个人还不是很满意,为什么就不能想windows里面那样给我痛快地显示出来呢?问题估计还是sun的JFileChooser太旧了,也不更新下,你说就算不更新,也给我们一些开放度大点的东西吧,啧啧,非逼得我挑剔。期间,试用了UIManager的Look and Feel,找到windows下面的,看来下还凑合,只是左边的快捷图标怎么没有scrollpane呢?郁闷死我。
任务仍在进一步完善中,我也逐渐培养自己写这种业余水平的总结心得的习惯,但愿以后既有很规范的文档总结,有能有我自己独特的心路历程吧。以下附代码,比较长,中间尽量也放些讲解,技术blog可能这点好很多吧,其他的都还限制长度。
ps:中间一度查阅提供给我的英文网页,看的吐血了n次。以后还会碰到很多,初步需要jdk中的demo和api 源代码,其次借助tutorial、doc和javaworld等其他一些文档资料,进一步了解java,还下了一个java实用程序设计100例原代码和素材,不知有用没。
1. FileChooserDemo,主演示类,在第三个按钮下是JFileChooser,里面添加预览和Filter
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class FileChooserDemo extends JFrame ...{
private JButton btn1, btn2, btn3, btn4;
private JTextArea area;
private ObjectOutputStream output;
private JScrollPane scroll;
private JPanel panel;
public FileChooserDemo() ...{
super("FileChooser Demo");
btn1 = new JButton("Open Directory");
btn1.addActionListener(new ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
JFileChooser choose = new JFileChooser();
choose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = choose.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION)// if approve (yes,
// ok) is chosen
...{
File file = choose.getSelectedFile();
if (!file.exists())
area.append("File does not exist~!");
else if (file.isDirectory()) ...{
area.append("Directory " + file.getName()
+ " containt following files: ");
for (int i = 0; i < file.list().length; i++)
area.append(file.list()[i] + " ");
} else if (file.isFile())
area
.append("It is a file, please use the second button to hava another test ");
} else
return;
}
});
btn2 = new JButton("Open a file");
btn2.addActionListener(new ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
JFileChooser choose = new JFileChooser();
choose.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = choose.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION)// if approve (yes,
// ok) is chosen
...{
File file = choose.getSelectedFile();
if (!file.exists())
area.append("File does not exist~!");
else ...{
try ...{
output = new ObjectOutputStream(
new FileOutputStream(file));
// .....
// tobeContinued
} catch (IOException ioexception) ...{
area.append(ioexception.toString());
}
}
} else
return;
}
});
btn3 = new JButton("Images File Filter");
btn3.addActionListener(new ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
JFileChooser choose = new JFileChooser();
// add ImagePreviewPanel Accessory
ImagePreviewPanel preview = new ImagePreviewPanel();
choose.setAccessory(preview);
choose.addPropertyChangeListener(preview);
choose.setFileSelectionMode(JFileChooser.FILES_ONLY);
/**//*
* //add FindAccessory FindAccessory search = new
* FindAccessory(); choose.setAccessory(search);
* choose.addPropertyChangeListener(search);
* choose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
*/
// add Filters
String htmlExts[] = ...{ "html", "htm" };
String imageExts[] = ...{ "jpg", "jpeg", "png", "gif","bmp" };
// construct it giving it an array of file
// extensions and a description string
GenericFileFilter filter = new GenericFileFilter(htmlExts,
"HTML Files");
choose.addChoosableFileFilter(filter);
filter = new GenericFileFilter(imageExts,
"Images Files(*.jpg;*.jpeg;*.png;*.gif;*.bmp)");
choose.addChoosableFileFilter(filter);
choose.setFileView(new GenericFileView(imageExts,
GenericFileView.IMAGE_FILEVIEW));
/**//*
* addChoosableFileFilter(Filter filter) and
* setFileFilter(Filter filter) are two familiar methods,they
* both add the filter to the JFileChooser, the difference is
* the setFileFilter set itself to the default choose.
*/
int result = choose.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION)// if approve (yes,
// ok) is chosen
...{
File file = choose.getSelectedFile();
if (!file.exists())
area.append("File does not exist~!");
else
area.append("You chose " + file.getName() + " ");
} else
return;
}
&nb
分享到:
相关推荐
java程序设计 TCP文件传输程序 JFileChooser实现文件选择 可以设置路径
Swing中使用JFileChooser选择文件目录
JFileChooser下载文件到本地,可选择文件保存路径,可以上传文件,保存文件chooser.showSaveDialog()函数,打开文件chooser.showOpenDialog()函数
Java中文件选择器JFileChooser.showSaveDialog实现默认文件名的解决方案
主要介绍了Java文件选择对话框JFileChooser使用详解的相关资料,需要的朋友可以参考下
选择路径保存文件,运用JFileChooser组件生成、
JFileChooser使用详解,告诉你这个类怎样使用,包括打开文件,选择文件 啊,等等!
主要介绍了Java Swing组件文件选择器JFileChooser简单用法,结合实例形式分析了Swing组件中的文件选择器JFileChooser的简单使用方法,需要的朋友可以参考下
JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.showSaveDialog(null);
NULL 博文链接:https://happyqing.iteye.com/blog/2063990
JFileChooser类简单的修改!其他的地方还没研究明白!希望大家一起研究下!
这是JDK里的JFileChooser类解压出的源代码
主要介绍了JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码,需要的朋友可以参考下
JAVA中JFileChooser的使用方法 实现打开保存和关闭文件
JFileChooser是Swing库提供的一个用于选择文件和目录的组件。它允许用户浏览文件系统并选择所需的文件或目录。
里面包含了:java窗口的构架设计,JFileChooser、文件过滤器、JTextArea、JScrollPane、JTree、JMenuBar、用JTimer自动执行任务,及最让人头痛的文件存储操作数据等。 功能:1、选择一般文档(txt、java等普通格式...
使用JFileChooser类实现文件的打开、保存和新建功能。用户可以通过菜单栏或快捷键调用相应的方法。 ``` JFileChooser fileChooser = new JFileChooser(); // 打开文件 int result = fileChooser.showOpenDialog...
读文件分配0 ICS 440并行算法该程序用于分配打开所选文件并以其他名称输出确切文件的任务。 分配的特征如下:-使用JFileChooser选择文件。 -JFileChooser在程序的当前运行目录中打开。 -输出文件名具有相同的输入...
java实现的文件选择器的java代码Jfilechooser
Java生成、修改文件夹和文件名,Java创建目录或文件夹,并修改、删除、重命名文件夹或文件名称,使用进行的文件操作实例。 super("目录和文件的创建、删除和更名"); //调用父类构造函数 jtfPath=new ...