Windows Look&Feel for JFileChooserでは、JFileChooserダイアログの左側に最近のアイテム、デスクトップ、マイドキュメント、コンピュータ、ネットワークの5つのボタンが表示されます。これらはそれぞれ、Windowsエクスプローラーが表示するファイルシステムのビューを表します。 JFileChooserは、setSelectedFile()またはsetCurrentDirectory()メソッドが呼び出されない限り、デフォルトでマイドキュメントビューに表示されます。マイドキュメントの代わりにJFileChooserをコンピュータビューにする方法
「コンピュータ」ビューに表示される、多数のマップされたネットワークドライブの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のを騙しする方法はありますか?
EDIT
迅速かつ徹底的な回答をありがとう。私は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();
}
}
}
1+と同上、それもうまくいきます。 –