JFileChooser
ダイアログを開いて、ユーザが次の操作のためのwish-directoryを決定できるようにしようとしています。JFileChooserの動作を理解する
JFileChooser chooser;
if(pref.get("LAST_PATH", "") != null){
chooser = new JFileChooser(pref.get("LAST_PATH", ""));
} else{
chooser = new JFileChooser(home_dir);
}
//chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
int retVal = chooser.showOpenDialog(frame);
System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory().toString());
HOME_DIRは、ユーザーのダウンロード・ディレクトリを指す静的な文字列です:
以下は、私の現在のコードです。
行動私は理解していない:OK
home_dir = C:/Users/Scy/Downloads
押しをダウンロード内の任意のファイルを選択し
Output: C:/Users/Scy
home_dir = C:/Users/Scy/Downloads
任意のファイル(またはディレクトリ)を選択せずに
Output: C:/Users/Scy/Downloads
何も選択せずに[OK]を押すとフルパス(C:/Users/Scy/Downloads
)が出力されないのはなぜですか?
編集を(DIRECTORIES_ONLY
がアクティブで、DIRECTORIES_ONLY
なしで何も選択せずにOKを押すことはできません):私はちょうど私がちょうど何も選択せずに[キャンセル]ボタンを押したときの出力は、私は、C:/Users/Scy/Downloads
を期待確かにあることに気づきました。この記事への回答に基づいて
私は次のことを試してみました:
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(home_dir)); //home_dir = "C:/Users/Scy/Downloads"
結果は上記と全く同じでした。キャンセルボタンを押すとフルパス出力、OK/Acceptを押すと結果はC:/Users/Scy
となります。
"ダウンロード出力内の任意のファイルを選択:C:/ Users/Scy/Downloads"これは私があなたの質問で混乱しているところです。ディレクトリで**ファイル**を選択すると、 'getParentDirectory()'はそのディレクトリの名前を返すべきです。他に何を期待していますか?もっと重要なことは、あなたはどのような行動を望んでいるのですか? –
'getParentDirectory()'はどこで使うのですか? 'getCurrentDirectory()'は、指定したファイルの親ディレクトリを返します。 C:/ Users/Scy/DownloadsはC:/ Users/Scyとなりますが、C:/ Users/Scy/Downloadsは現在のディレクトリであるはずです。 –