更改一下外觀為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循環,所以後台處理的同時只是一個文件上傳,即排序的處理上傳文件,就和單個文件上傳的代碼一樣,如果你早有後台的單文件上傳代碼就不用改,直接調用就行了,可以共用)