JFileChooser文件选择器在保存时的 文件类型默认只有'所有文件',怎么在里面添加 txt,jpg 类型的文件,还怎么在点保存时过滤输入文件名中的特殊字符,如记事本样 过滤的特殊字符,“\ / * ? : | " < >”我在用JFileChooser保存文件时怎么把文件名中的这些特殊字符 过滤出来啊,尤其是”\ * “ 这两个符号,怎么都都过滤不出来,请知道的大虾们指导下,小弟急用啊,最好有个什么例子,,谢谢
解决方案 »
- 使用split划分字符串的问题。
- input一个日期,计算出下一个月的最后一天
- java 里 user.home 对应 windows 哪个变量
- 求高手写一个判断数字是否为double类型的抛出异常Exception,给全分谢谢
- sql与java连接问题读数据,请高手看看怎么了。谢谢!
- 请教一个画图问题 多谢
- 我不知道怎么改了,找大虾帮修改下,急!!先谢谢了!!!!!
- 怎样才能做出可以动态显示信息的程序启动画面? (高分哦)
- 各位老大,谁能帮帮我,一简单问题,高分!!
- 我想请教一下关于iReport生成二维码的问题
- 小程序竟然出现OutOfMemoryError错误,高手帮我看看怎么改进算法!
- 菜鸟问题接口
可以过滤掉其他的文档
JFileChooser.setFileFilter(new FileNameExtensionFilter("选择txt\jpg文件",new String[]{"txt","jpg"});
以下代码弹出一个针对用户主目录的文件选择器,其中只显示 .jpg 和 .gif 图像: JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}since 1.6
// 文件后缀过滤
jFileChooser1.setAcceptAllFileFilterUsed(false);
jFileChooser1.addChoosableFileFilter(new SqlFileFilter("sql"));
public class SqlFileFilter extends FileFilter {
String sql;
public SqlFileFilter(String ext) {
sql = ext;
}
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
String extension = fileName.substring(index + 1).toLowerCase();
// 文件过滤,后缀为.sql的文件返回true
if (extension.equals(sql))
return true;
}
return false;
}
// 文件类型描述
public String getDescription() {
if (sql.equals("sql"))
return "Files(*.sql)";
return "";
}
}
以前写的一个东西希望对你有帮助
String outFileName=chooser.getName(f);//获得你输入的名字 // 然后对这里的outFileName过滤就行了!!!!
f.replaceAll("","")//这里用正则 过滤 把那些特殊字符换为 空格
f=f.trim();//去掉空格
这里需要加上过滤字符的正则表达式
JFileChooser 点保存时 "*"就自动就跑到 文件类型里去了,这怎么办啊
======================================================================public class ImageFileFilter
extends FileFilter { protected String extension; public ImageFileFilter(String extension) {
this.extension = extension;
} /**
* Returns true if the given file has the correct extension, false if not.
*
* @param f File
* @return boolean
*/
public boolean accept(File f) {
boolean accept = false;
String fileName = null;
if (f != null) {
if (f.isDirectory()) {
accept = true;
}
else {
fileName = f.getPath().toLowerCase();
if (fileName.endsWith(extension)) {
accept = true;
}
}
}
return accept;
} /**
* Returns the file description
*
* @return String
*/
public String getDescription() {
return extension;
}
}
{
String[] specialChar={"'","="," ","\\","/","*"};
String s;
s=str;
for(int i=0;i<specialChar.length;i++)
{
s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
}
return(s);
}
jdk底层对这两个字符有特殊处理。
这时是可以的
ert 这是输出 符合要求吗??
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileNameExtensionFilter;;public class TestJFileChooser { public static void main(String[] args) {
JFrame frame = new JFrame();
JButton button = new JButton();
JButton button1 = new JButton();
button.setText("Save");
button1.setText("提示");
JPanel panel = new JPanel();
final JFileChooser re = new JFileChooser() {
public void approveSelection() {
if (this.getDialogType() == JFileChooser.SAVE_DIALOG) {
File file = this.getSelectedFile();
System.out.println("----- "+filterSpecialChar(file.getName()));
if (!file.exists()) {
if (JOptionPane.showConfirmDialog(this, file.getPath()
+ " 已存在。\n要替换它吗?", "另存为",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE) == JOptionPane.NO_OPTION) {
return;
}
}
}
super.approveSelection();
}
};
re.setFileFilter(new FileNameExtensionFilter("*.txt",new String[]{"txt"})); panel.add(button);
panel.add(button1);
frame.add(panel);
button.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
int temp = re.showSaveDialog(null);
}
}); button1.addKeyListener(new KeyAdapter(){ @Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
System.out.println((int)e.getKeyChar());
}
});
frame.setSize(600, 400);
frame.setLocation(300, 300); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static String filterSpecialChar(String str)
{
System.out.println("|"+str);
String[] specialChar={"'","="," ","\\","/","*"};
String s;
s=str;
for(int i=0;i <specialChar.length;i++)
{
System.out.println("|"+str);
s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
}
return s;
}
}
---------------------------------------------------------------------------我一输入星号一点 星号就跑到 文件类型里去了,这是我的代码,看看嘛?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class FilterChar
{ /**
* @param args
*/
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
while(in.hasNext())
{
String str=in.nextLine();
//str=StringFilter(str);
str=filterSpecialChar(str);
System.out.println(str);
} }
private static String filterSpecialChar(String str)
{
String[] specialChar={"'","="," ","\\","/","*"};
String s;
s=str;
for(int i=0;i<specialChar.length;i++)
{
s=(s.indexOf(specialChar[i])==-1)?s:s.replace(specialChar[i],"");
}
return(s);
}}
这是一个例子
你的那代码看不错你想干啥!!