我有一個jfilechooser設置爲DIRECTORIES_ONLY模式。 我不喜歡我目前的jfilechooser,在directories_only模式下選擇文件夾顯示文件夾名稱中的完整絕對路徑。 有沒有什麼辦法可以覆蓋這種行爲只顯示文件夾名稱,就像文件的情況下一樣?jfilechooser如何在DIRECTORIES_ONLY模式下隱藏文件夾名稱中的完整路徑
我的JFileChooser是爲了 指定是要創建如果選擇一個文件夾內容保存到 或 文件夾的名稱,覆蓋該文件夾
我有一個jfilechooser設置爲DIRECTORIES_ONLY模式。 我不喜歡我目前的jfilechooser,在directories_only模式下選擇文件夾顯示文件夾名稱中的完整絕對路徑。 有沒有什麼辦法可以覆蓋這種行爲只顯示文件夾名稱,就像文件的情況下一樣?jfilechooser如何在DIRECTORIES_ONLY模式下隱藏文件夾名稱中的完整路徑
我的JFileChooser是爲了 指定是要創建如果選擇一個文件夾內容保存到 或 文件夾的名稱,覆蓋該文件夾
我不是在java中編寫代碼,而是在kawa(jvm scheme)中編寫代碼,所以我只能給出解決方案,就像我可以。
基本上我加入一個PropertyChangeListener到我的JFileChooser 覆蓋的propertyChange方法做如下 我聽的屬性更改SELECTED_FILE_CHANGED_PROPERTY和手動設置的文件名顯示給FileChooserUI內其是JFileChooser中的一部分。
請注意,所有這些僅僅是爲了美觀,所選的文件夾並未被改變。這只是文件名顯示不應該這樣完整的路徑,而只是你剛剛選擇的文件夾的名稱。
這裏是我嘗試編寫未經測試的java代碼。當我有更多時間時,我會再次測試。
JFileChooser folder_chooser = new JFileChooser();
folder_chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY);
PropertyChangeListener folder_name_changer = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
String property_name = e.getPropertyName();
JFileChooser chooser = e.getSource();
if (property_name.equals(JFileChooserSELECTED_FILE_CHANGED_PROPERTY) {
File selected_file = chooser.getSelectedFile();
FileChooserUI chooser_ui = chooser.getUI();
// BasicFileChooserUI is the subclass that implements a setFileName method
if (selected_file != null && (chooser_ui instanceof BasicFileChooserUI)) {
chooser_ui.setFileName(selected_file.getFileName());
}
}
}
};
folder_chooser.addPropertyChangeListener(folder_name_changer);
我有同樣的問題。我刪除了一些有關的模式設置爲DIRECTORIES_ONLY,而是使用了文件過濾器,以便只目錄將在瀏覽視圖顯示:
chooser.setFileFilter(new FileFilter() {
def accept(f: File) = f.isDirectory
})
(對不起,這是斯卡拉,但它應該是足夠清楚)。
但是,如果您希望用戶能夠選擇要覆蓋的目錄,這對於您的第二個用例來說效果不佳。
對不起,這並沒有解決我的問題,我想出了下面的解決方案。問題是,當我選擇了一個文件夾並按下保存時,我希望該程序覆蓋該文件夾或將其選爲我的導出目標。我不想打開文件夾。 – 2014-01-25 14:54:40