更改一下外观为windows的:
if(UIManager.getLookAndFeel().isSupportedLookAndFeel()){
final String platform = UIManager.getSystemLookAndFeelClassName();
// If the current Look & Feel does not match the platform Look & Feel,
// change it so it does.
if (!UIManager.getLookAndFeel().getName().equals(platform)) {
try {
UIManager.setLookAndFeel(platform);
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
如果不需要文件过滤可以选择 FileDialog来打开文件,这个是调用操作系统的文件筐打开文件的,但是在window下实现不了文件过滤,其他系统下可以。如果用JFileChoose可以很容易实现,文件过滤,但是界面默认是java外观。如果要好看,可以设置一下显示外观。
2. java swing文件选择工具JFileChooser怎么改变打开和取消按钮的名字
JFileChooser 用setApproveButtonText(String approveButtonText) 改变选定按钮的文抄本
取消袭按钮好像不能单独改变文本,可以在整个UI层面语言包层面替换取消的文本。。通常不用改取消按钮
用法
1、 fc.setApproveButtonText("打开存档");//单独指定按钮文本
2、fc.showDialog(null,"打开存档");在显示前顺便指定按钮文本
3. java的awt包中有能选择路径的控件吗,类似FileDialog只能选择文件,不能选路径,如果没有,怎么解决
用JFileChooser,用这个方法设置只能选择目录还是文件
void setFileSelectionMode(int mode) 设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。
4. JAVA中如何触动按钮后弹出文件浏览器和文件名选择框,选择保存目录
使用javaswing中的JFileChooser类就ok了
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;
public class WebJianXuanZe {
public static void fileChooser() {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
//设置文件类型
chooser.setFileFilter(filter);
//打开选择器面板
int returnVal = chooser.showOpenDialog(new JPanel());
//保存文件从这里入手,输出的是文件名
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("你打开的文件是: " +
chooser.getSelectedFile().getName());
}
}
public static void main(String[] args) {
fileChooser();
}
}
建议你可以翻java API 。新童鞋的话一定要学会用API、善于用API,尽量独立解决问题,这样能够加深映像,并且对子什么也是一个激励!~
5. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:
int result = 0;
File file = null;
String path = null;
JFileChooser fileChooser = new JFileChooser();
FileSystemView fsv = FileSystemView.getFileSystemView(); //注意了,这里重要的一句
System.out.println(fsv.getHomeDirectory()); //得到桌面路径
fileChooser.setCurrentDirectory(fsv.getHomeDirectory());
fileChooser.setDialogTitle("请选择要上传的文件...");
fileChooser.setApproveButtonText("确定");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
result = fileChooser.showOpenDialog(chatFrame);
if (JFileChooser.APPROVE_OPTION == result) {
path=fileChooser.getSelectedFile().getPath();
System.out.println("path: "+path);
}
这是另外一种方法得到桌面路径:
File desktop = new File(System.getProperty("user.home")+System.getProperty("file.separator")+"XX");
filechooser.setCurrentDirectory(desktop);
我的文档 路径: fsv.getDefaultDirectory());
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
6. Java (文件选择器) 保存文件
JFileChooser fd=new JFileChooser();
fd.showSaveDialog(null);
File f=fd.getSelectedFile();
System.out.println(f.getName());
疑惑解答:
1. JFileChooser.getSelectedFile()返回一个文件对象,调这个文件对象的getName()很容易得到用专户输入的文件名。返回文件对象既属包含了文件路径也包含了文件名,这也体现了Java面向对象的思想。
2. Java的文件对象在文件系统中是可以存在,也可不存在的,所以Java的文件对象有exists()、
createNewFile()、mkdir()等方法。所以文件保存对话框返回的文件对象不一定在文件系统实际存在,而仅仅是一串路径的表示。
7. Java中编写出一个文件选择器。能选择文件夹的。
你可以同时查找盘中所有的文件夹,如:在窗体上部输入 c:
package 查找文件;
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.jscrollPane;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class TestList extends JFrame {
JTextField jf;
JList list;
public TestList() {
this.setTitle("查找文件");
this.setBounds(200, 200, 500, 500);
jf = new JTextField();
list = new JList();
this.add(jf, BorderLayout.NORTH);
this.add(new JScrollPane(list), BorderLayout.CENTER);
jf.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
// JOptionPane.showMessageDialog(null, jf.getText());
String path = jf.getText();
File root = new File(path);
if (root.exists()) {
File[] listf = root.listFiles();
String[] items = new String[listf.length];
int i = 0;
for (File f : listf) {
items[i] = f.getAbsolutePath();
i++;
}
list.setListData(items);
} else {
JOptionPane.showMessageDialog(null, "输入不正确地址");
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
});
list.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
Object sel = list.getSelectedValue();
if (sel == null)
return;
String path = list.getSelectedValue().toString();
System.out.println(path);
File root = new File(path);
if (root.isDirectory()) {
if (root.exists()) {
File[] listf = root.listFiles();
String[] items = new String[listf.length];
int i = 0;
for (File f : listf) {
items[i] = f.getAbsolutePath();
i++;
}
list.setListData(items);
} else {
JOptionPane.showMessageDialog(null, "输入不正确");
}
} else {
JOptionPane.showMessageDialog(null, "输入不是文件夹");
}
}
});
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new TestList();
}
}
8. java 中怎么通过文件选择器选择要保存文件的的目录,然后返回绝对路径
如果用的是JFileChooser的话可以用getCurrentDirectory().getPath();方法得到你选择的文件夹路径。
9. 用Java写一个文件选择窗口
其它办法肯定是有的,用File就可以,只不过要自己绘制界面,这是个很淡疼的事。先获得一个目录下的所有文件,然后自己处理一下,排个序显示出来,例子找不着了,以前写过,思路就是那样的。
Win8,听起来很厉害的样子,没用过,不清楚。
通过FileDialog,当你打开一个目录后,这个位置会被记录下来,在你重新new这个FileDialog之前这个位置是不会变的。通常都是利用这一点来保存用户上次选择的位置。具体例子,没有。(但是看你一说是win8下有,winxp下没有,我觉得我说的好象没什么用处了。)
过滤文件格式是可以的,FileDialog是可以添加过滤器的。你怎么什么都要例子?
不过我在api里见到这样 一句话,意思是windows的过滤器在sun的实现中,不起作用。
还有,我作为菜鸟都觉得分太低了,大神是不会来拯救你了。。。
10. javaWEB项目中如何实现批量选择文件并上传呢有什么好的插件,最好有相关代码例子
jquery.uploadify批量上传控件
[html]
<linkhref="styles/uploadify.css"rel="stylesheet"type="text/css"/>
<scripttype="text/javascript"src="styles/uploadify.swf"></script>
<scripttype="text/javascript"src="javascripts/jquery.uploadify.min.js"></script>
<linkhref="styles/uploadify.css"rel="stylesheet"type="text/css"/>
<scripttype="text/javascript"src="styles/uploadify.swf"></script>
<scripttype="text/javascript"src="javascripts/jquery.uploadify.min.js"></script>还有jquery.js,你懂得!
这里注意哦,css文件会引用到这个图片哦,所以请你指定这个图片的位置哦,不然就没有显示这个叉叉哦,这个叉叉是删除按钮的哦,没有就是空白哦!
[javascript]
<script>
functionsnedUpLoad(){
varpid=$("#entityId").val();//这个是我自己获取的自定义参数
varentityName=$("#entityName").val();//同上
$("#uploadify").uploadify({//初始化uploadifyuploadify是input的id
//'debug':false,//bug模式,默认是false
'auto':false,//自动上传,就是控件自动上传,默认是true
'multi':true,
//'successTimeout':99999,//超时时间
'formData':{'pid':pid,'entityName':entityName},//我的参数列表
//'fileObjName':'uploadify',//服务器的属性名字
'uploader':'你的后台url地址;jsessionid=${pageContext.session.id}',//提交服务器路径,这里
说明下;jsessionid=${pageContext.session.id},这个是用于非IE内核的浏览器兼容的
'swf':"styles/uploadify.swf",//flash文件,官方的文件,引用上就是了
//'uploader':'/Home/Upload',//文件保存路径用处不大
'buttonText':'文件上传',//按钮
//'height':'32',//浏览按钮的高度
//'width':'100',//浏览按钮的宽度
'fileTypeDesc':'支持的格式:',//在浏览窗口底部的文件类型下拉菜单中显示的文本
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',//允许上传的文件后缀
'fileSizeLimit':'3MB',//上传文件的大小限制
'queueSizeLimit':25,//上传数量
'onSelectError':function(file,errorCode,errorMsg){//返回一个错误,选择文件的时候触发
switch(errorCode){
case-100:
alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!");
break;
case-110:
alert("文件["+file.name+"]大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");
break;
case-120:
alert("文件["+file.name+"]大小异常!");
break;
case-130:
alert("文件["+file.name+"]类型不正确!");
break;
}
},
'onFallback':function(){//检测FLASH失败调用
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
'onUploadSuccess':function(file,data,response){//上传到服务器,服务器返回相应信息到data里
if(data){
vardataObj=eval("("+data+")");//转换为json对象
//$('#uploadify').uploadify('upload')
}
}
});
}
</script>
<script>
functionsnedUpLoad(){
varpid=$("#entityId").val();//这个是我自己获取的自定义参数
varentityName=$("#entityName").val();//同上
$("#uploadify").uploadify({//初始化uploadifyuploadify是input的id
//'debug':false,//bug模式,默认是false
'auto':false,//自动上传,就是控件自动上传,默认是true
'multi':true,
//'successTimeout':99999,//超时时间
'formData':{'pid':pid,'entityName':entityName},//我的参数列表
//'fileObjName':'uploadify',//服务器的属性名字
'uploader':'你的后台url地址;jsessionid=${pageContext.session.id}',//提交服务器路径,这里
说明下;jsessionid=${pageContext.session.id},这个是用于非IE内核的浏览器兼容的
'swf':"styles/uploadify.swf",//flash文件,官方的文件,引用上就是了
//'uploader':'/Home/Upload',//文件保存路径用处不大
'buttonText':'文件上传',//按钮
//'height':'32',//浏览按钮的高度
//'width':'100',//浏览按钮的宽度
'fileTypeDesc':'支持的格式:',//在浏览窗口底部的文件类型下拉菜单中显示的文本
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',//允许上传的文件后缀
'fileSizeLimit':'3MB',//上传文件的大小限制
'queueSizeLimit':25,//上传数量
'onSelectError':function(file,errorCode,errorMsg){//返回一个错误,选择文件的时候触发
switch(errorCode){
case-100:
alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!");
break;
case-110:
alert("文件["+file.name+"]大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");
break;
case-120:
alert("文件["+file.name+"]大小异常!");
break;
case-130:
alert("文件["+file.name+"]类型不正确!");
break;
}
},
'onFallback':function(){//检测FLASH失败调用
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
'onUploadSuccess':function(file,data,response){//上传到服务器,服务器返回相应信息到data里
if(data){
vardataObj=eval("("+data+")");//转换为json对象
//$('#uploadify').uploadify('upload')
}
}
});
}
</script>
[javascript]
$(function(){
snedUpLoad();//jquery容器加载完运行我们的函数
})
$(function(){
snedUpLoad();//jquery容器加载完运行我们的函数
})
[html]
<inputtype="file"name="uploadify"id="uploadify"/>//申明控件的容器
<inputtype="file"name="uploadify"id="uploadify"/>//申明控件的容器
前台页面代码基本就这样了,很好明白,至于后台逻辑和普通上传处理一致的,这里就不列出来的,最后上一张图给大家鉴赏一下
(tip:其实他的批量上传并不是一次全部提交处理的,他是一个一个依次提交,相当是一个for循环,所以后台处理的同时只是一个文件上传,即排序的处理上传文件,就和单个文件上传的代码一样,如果你早有后台的单文件上传代码就不用改,直接调用就行了,可以共用)