{Как переключить текущий каталог в `JFileChooser`?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 {Как переключить текущий каталог в `JFileChooser`?

Сообщение Anonymous »

Я хочу использовать кнопку «Домой» в JFileChooser для переключения между пользовательским каталогом и домашним каталогом.

Код: Выделить всё

static final File HOME = new File(System.getProperty("user.home"));
static final File CUSTOM = new File(HOME, ".jpilot");
JFileChooser fc = new JFileChooser(new File("TestData", "in")) {
void homeButtonPressed() {
setCurrentDirectory(!getCurrentDirectory().equals(HOME) ? HOME : CUSTOM);
}
};
fc.showOpenDialog(this);
File file = fc.getSelectedFile();
Поэтому мой вопрос заключается в том, как заменить несуществующий вымышленный метод homeButtonPressed() рабочим кодом.
Вот вы видите я имею в виду кнопку:
Изображение

В поисках подходящего Слушателя я выполнил следующее:

Код: Выделить всё

JFileChooser fc = new JFileChooser(new File("TestData/in"));
System.out.println("FileChooser="+fc.getClass());
System.out.println("FileSystemView="+fc.getFileSystemView().getClass());
for (PropertyChangeListener listener : fc.getPropertyChangeListeners())
System.out.println("PropChListener="+listener);
for (Component component : fc.getComponents())
System.out.println("Component="+component);
for (ComponentListener listener : fc.getComponentListeners())
System.out.println("CompListener="+listener);
PropertyChangeListener dirListener = fc.getPropertyChangeListeners()[3];
System.out.println("dirListener="+dirListener.getClass());
Похоже, что BasicDirectoryModel может быть полезен, но я понятия не имею, как его использовать.
Какое имя мне следует использовать для fc.getPropertyChangeListeners(String имя_свойства)?

Код: Выделить всё

FileChooser=class javax.swing.JFileChooser
FileSystemView=class javax.swing.filechooser.UnixFileSystemView
PropChListener=sun.swing.FilePane[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@17b8a8df,flags=265,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=405,height=135]]
PropChListener=sun.swing.plaf.synth.SynthFileChooserUIImpl$FilterComboBoxModel@141e7727
PropChListener=sun.swing.plaf.synth.SynthFileChooserUI$SynthFCPropertyChangeListener@18d105a
PropChListener=javax.swing.plaf.basic.BasicDirectoryModel@5a761e8e
PropChListener=java.beans.PropertyChangeListenerProxy@46c7373a
Component=javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@2187d78a,flags=9,maximumSize=,minimumSize=,preferredSize=]
Component=javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@48610c20,flags=9,maximumSize=,minimumSize=,preferredSize=]
Component=sun.swing.FilePane[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@17b8a8df,flags=265,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=405,height=135]]
Component=javax.swing.JPanel[,0,0,0x0,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@2209e9cc,flags=9,maximumSize=,minimumSize=,preferredSize=]
dirListener=class javax.swing.plaf.basic.BasicDirectoryModel
Кстати, я использую Java 21 и разрабатываю с помощью IDE NetBeans.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ilechooser
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»