Kullanıcılarımı bir dizine ve alt dizinlerine sınırlamak istiyorum ancak "Ana Dizin" düğmesi, bunların rasgele bir dizine göz atmalarına izin veriyor.JFileChooser'ı bir dizine nasıl kısıtlarım?
Bunu yapmaya nasıl devam etmeliyim?
Kullanıcılarımı bir dizine ve alt dizinlerine sınırlamak istiyorum ancak "Ana Dizin" düğmesi, bunların rasgele bir dizine göz atmalarına izin veriyor.JFileChooser'ı bir dizine nasıl kısıtlarım?
Bunu yapmaya nasıl devam etmeliyim?
Muhtemelen kendi FileSystemView ayarlarınızı kullanarak bunu yapabilirsiniz.
class DirectoryRestrictedFileSystemView extends FileSystemView
{
private final File[] rootDirectories;
DirectoryRestrictedFileSystemView(File rootDirectory)
{
this.rootDirectories = new File[] {rootDirectory};
}
DirectoryRestrictedFileSystemView(File[] rootDirectories)
{
this.rootDirectories = rootDirectories;
}
@Override
public File createNewFolder(File containingDir) throws IOException
{
throw new UnsupportedOperationException("Unable to create directory");
}
@Override
public File[] getRoots()
{
return rootDirectories;
}
@Override
public boolean isRoot(File file)
{
for (File root : rootDirectories) {
if (root.equals(file)) {
return true;
}
}
return false;
}
}
Oldukca iyi "createNewFolder" yöntemi yapmak gerekir, ancak bu daha fazla dizinleri birine kullanıcıyı kısıtlamak yapar:
Örtmek başkasının gelecekte buna ihtiyacı var.
Ve bu gibi kullanmak:
FileSystemView fsv = new DirectoryRestrictedFileSystemView(new File("X:\\"));
JFileChooser fileChooser = new JFileChooser(fsv);
veya böyle
:FileSystemView fsv = new DirectoryRestrictedFileSystemView(new File[] {
new File("X:\\"),
new File("Y:\\")
});
JFileChooser fileChooser = new JFileChooser(fsv);
Çalışmıyor @Allain –
Allain çözümü neredeyse tamamlandı. Üç sorunlar çözmek için açıktır:
public TFile getHomeDirectory() { return rootDirectories[0]; }
seti sınıf ve yapıcı public
Değişim JFileChooser fileChooser = new JFileChooser(fsv);
JFileChooser fileChooser = new JFileChooser(fsv.getHomeDirectory(),fsv);
içine ben TrueZips TFileChooser ve üzerinden bir zip dosyası içinde kalmak kullanıcıları sınırlamak için kullanabilirsiniz Yukarıdaki kodda küçük değişikliklerle, bu mükemmel çalışır. Çok teşekkürler.
Bu kadar karmaşık olmanıza gerek yok. Kolayca Sen varsayılan filesystemview alabilirim (örneğin kendisine temsilci) burada nasıl How to Use File Choosers
Bu, genel olarak dizinlere sınırlar, ancak OP'nin sorusu olan belirli bir dizine değil. –
daha referansı okuyabilir bu
gibi JFileChooser seçimi modunu ayarlayabilirsiniz? –
@Jason S - olasılıkla statik yöntemle getFileSystemView() ' – McDowell
Sadece birisinin buna ihtiyacı varsa, OP'nin istediği şeyin tam bir örneği: http://tips4java.wordpress.com/2009/01/28/single -root-file-chooser/ –