JFileChooser の Windows ルック アンド フィールでは、JFileChooser ダイアログの左側に、最近使用した項目、デスクトップ、マイ ドキュメント、コンピュータ、およびネットワークの 5 つのボタンが表示されます。これらはそれぞれ、Windows エクスプローラーで表示されるファイル システムのビューを表します。setSelectedFile() または setCurrentDirectory() メソッドが呼び出されない限り、JFileChooser はデフォルトで My Documents ビューに設定されているようです。
「コンピューター」ビューに表示される、多数のマップされたネットワーク ドライブの 1 つをユーザーが簡単に選択できるようにしようとしています。デフォルトで「コンピュータ」ビューを開くように JFileChooser を設定する方法はありますか?
私はそれを強制するためにいくつかの方法を試しました.最新のものはルートディレクトリを見つけてcurrentDirectoryとして設定することですが、これはそのルートノードの内容を示しています. 最新のコードは以下に含まれています。
private File originalServerRoot;
private class SelectOriginalUnitServerDriveListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser origDriveChooser = new JFileChooser();
origDriveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File startFile = new File(System.getProperty("user.dir")); //Get the current directory
// Find System Root
while (!FileSystemView.getFileSystemView().isFileSystemRoot(startFile))
{
startFile = startFile.getParentFile();
}
origDriveChooser.setCurrentDirectory(startFile);
origDriveChooser.setDialogTitle("Select the Mapped Network Drive");
int origDriveChooserRetVal = origDriveChooser.showDialog(contentPane,"Open");
if (origDriveChooserRetVal == JFileChooser.APPROVE_OPTION)
{
originalUnitServerRoot = origDriveChooser.getSelectedFile();
}
}
}
デフォルトで「コンピューター」ビュー (またはネットワーク、またはその他のビュー) を選択できるようにする方法、または JFileChooser をだます方法はありますか?
編集
迅速かつ完全な回答をありがとう。Hovercraft Full Of Eels と Guillaume Polet の回答を組み合わせて、どのドライブ文字でもコードが機能するようにしました。結果のコードは次のとおりです。もう一度、ありがとう。
private File originalServerRoot;
private class SelectOriginalUnitServerDriveListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser origDriveChooser = new JFileChooser();
origDriveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
File startFile = new File(System.getProperty("user.dir")); //Get the current directory
// Find System Root
while (!FileSystemView.getFileSystemView().isFileSystemRoot(startFile))
{
startFile = startFile.getParentFile();
}
//Changed the next line
origDriveChooser.setCurrentDirectory(origDriveChooser.getFileSystemView().getParentDirectory(rootFile));
origDriveChooser.setDialogTitle("Select the Mapped Network Drive");
int origDriveChooserRetVal = origDriveChooser.showDialog(contentPane,"Open");
if (origDriveChooserRetVal == JFileChooser.APPROVE_OPTION)
{
originalUnitServerRoot = origDriveChooser.getSelectedFile();
}
}
}