2008年8月29日星期五

swing中JFileChooser的用法

1、基本用法

JFileChooser dlg = new JFileChooser();
dlg.setDialogTitle("Open JPEG file");
int result = dlg.showOpenDialog(this); // 打开"打开文件"对话框
// int result = dlg.showSaveDialog(this); // 打"开保存文件"对话框
if (result == JFileChooser.APPROVE_OPTION) {
File file = dlg.getSelectedFile();
...
}

2、自定义FileFilter

JDK没有提供默认的文件过滤器,但提供了过滤器的抽象超类,我们可以继承它。

import javax.swing.filechooser.FileFilter;

public final class PictureFileFilter extends FileFilter {

private String extension;

private String description;

public PictureFileFilter(String extension, String description) {
super();
this.extension = extension;
this.description = description;
}

public boolean accept(File f) {
if (f != null) {
if (f.isDirectory()) {
return true;
}
String extension = getExtension(f);
if (extension != null && extension.equalsIgnoreCase(this.extension)) {
return true;
}
}
return false;
}

public String getDescription() {
return description;
}

private String getExtension(File f) {
if (f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if (i > 0 && i < filename.length() - 1) {
return filename.substring(i + 1).toLowerCase();
}
}
return null;
}

}

其实主要就是accept(File f)函数。上例中只有一个过滤器,多个过滤器可参考JDK目录中“demo\jfc\FileChooserDemo\src”中的“ExampleFileFilter.java”


3、多选

在基本用法中,设置

c.setMultiSelectionEnabled(true);

即可实现文件的多选。

读取选择的文件时需使用

File[] files = c.getSelectedFiles();

4、选择目录

利用这个打开对话框,不仅可以选择文件,还可以选择目录。

其实,对话框有一个FileSelectionMode属性,其默认值为“JFileChooser.FILES_ONLY”,只需要将其修改为“JFileChooser.DIRECTORIES_ONLY”即可。

JFileChooser c = new JFileChooser();
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
c.setDialogTitle("Select path to save");
int result = c.showOpenDialog(PrintDatetime.this);
if (result == JFileChooser.APPROVE_OPTION) {
String path = c.getSelectedFile().getAbsolutePath());
...
}

2008年8月25日星期一

7-must-read-linux-tutorials

http://www.linuxscrew.com/2007/10/11/7-must-read-linux-tutorials/

2008年8月22日星期五

Install OpenMoko or Qtopia in Rokr E6 or A1200

http://linuxpdablog.blogspot.com/2008/06/install-openmoko-or-qtopia-in-rokr-e6.html


http://www.openmoko.com/product-qa.html

http://planet.openezx.org/

2008年8月20日星期三

改变世界

  我小时候想改变世界
  到了一定年龄觉得不可能
  想改变国家
  后来也知道不可能
  想改变身边的人
  当然我也知道那不可能
  想改变家里人
  还是不可能
  想改变自己?
  等我意识到想改变自己时已经晚了,因为江山易改本性难移。
  
  我反省
  如果从一开始我就改变自己
  或许我可以影响我的家人
  从而改变周围的人
  从而改变国家
  也许会改变世界

2008年8月12日星期二

2008年8月5日星期二

USB Test Tools

http://www.usb.org/developers/tools/
USBCV R1.3.2 - Windows XP SP2 (English Version) only

电脑打开文件夹(内有 swf、flv 格式)都会很慢,右链菜单也要半分钟才能出来,解决办法

你用的是深度 sp3吧?这是一个小bug,现在可以用如下办法解决:

在GHOST8.1 中SWF,FLV,F4A,F4V,F4P 文件的图标都关联到了一个网络上的一个文件上了(192.168.1.2\公用目录\XP SP3 工作目录\克隆版制作\sa_flashplayer_9_debug.exe)。导致系统在打开一个含有以上文件的问件夹时出现假死现象。此注册表补丁就是重新关联了以上文件和文件的图标。




打开一个文本文档,复制如下注册表代码进去,然后保存,把文档的后缀名改成.reg
如:“关联修复.reg” 然后双击运行把注册表文件导入即可。


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\FlashPlayer.FlashVideo\DefaultIcon]
@="C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe,-202"

[HKEY_CLASSES_ROOT\FlashPlayer.FlashVideo\shell\open\command]
@="\"C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe\" %1"

[HKEY_CLASSES_ROOT\FlashPlayer.VideoForFlashPlayer\DefaultIcon]
@="C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe,-203"

[HKEY_CLASSES_ROOT\FlashPlayer.VideoForFlashPlayer\shell\open\command]
@="\"C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe\" %1"

[HKEY_CLASSES_ROOT\FlashPlayer.ProtectedMediaForFlashPlayer\DefaultIcon]
@="C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe,-204"

[HKEY_CLASSES_ROOT\FlashPlayer.ProtectedMediaForFlashPlayer\shell\open\command]
@="\"C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe\" %1"

[HKEY_CLASSES_ROOT\FlashPlayer.AudioForFlashPlayer\DefaultIcon]
@="C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe,-205"

[HKEY_CLASSES_ROOT\FlashPlayer.AudioForFlashPlayer\shell\open\command]
@="\"C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe\" %1"

[HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\DefaultIcon]
@="C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe,-608"

[HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash\shell\open\command]
@="\"C:\\WINDOWS\\system32\\Macromed\\Flash\\sa_flashplayer_9.exe\" %1"
参考资料:深度技术论坛