Долгое время разработчик, Java-новичок.Установка выбранного файла в каталог на FileChooser в Java
Я использую объект JFileChooser с SelectionMode для DIRECTORIES_ONLY. Он запускается из Обзор JButton рядом с JTextField, где я храню каталог после выбора.
Мой вопрос заключается в следующем: когда я пытаюсь выбрать каталог, нажав на кнопку «Обзор» второй раз, как я могу открыть его с ранее выбранным каталогом, выбранным в File Chooser? Позвольте мне расшириться, у меня нет проблем с установкой текущего каталога родительскому значению в моем поле JText или установкой выбранного файла в значение в моем поле JText, но в любом случае фактическая конечная ветвь каталога, который я выбрал ранее, не выбран.
Если я делаю подобное упражнение с файловым выбором с SelectionMode из FILES_ONLY; когда я устанавливаю выбранный файл в ранее выбранный файл, он открывается в родительский каталог, и файл выделяется в файле chooser, и полный путь отображается в текстовом поле в нижней части файла выбора.
Вот урезанная версия моего кода, которая должна продемонстрировать то, о чем я говорю.
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.lang.reflect.*;
import java.nio.charset.*;
import java.nio.file.*;
import java.util.*;
import javax.swing.*;
import javax.swing.plaf.*;
import javax.swing.filechooser.*;
public class myFrame extends JFrame {
public myFrame() {
JLabel lblProjDir = new JLabel("Project Directory:");
JTextField txtProjDir = new JTextField(System.getProperty("user.home"));
JButton btnBrowse= new JButton("...");
JButton btnOK = new JButton("OK");
add(lblProjDir);
add(txtProjDir);
add(btnBrowse);
add(btnOK);
btnBrowse.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser fileDialog = new JFileChooser();
fileDialog.setSelectedFile(new java.io.File(txtProjDir.getText()));
fileDialog.setDialogTitle("Set Working Project Directory");
fileDialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileDialog.setAcceptAllFileFilterUsed(false);
if (fileDialog.showOpenDialog(btnBrowse) == JFileChooser.APPROVE_OPTION) {
txtProjDir.setText("" + fileDialog.getSelectedFile());
} } });
btnOK.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
//Do some other actions here with data collected
dispose();
}
});
setSize(200, 200);
setMinimumSize(new Dimension(200,200));
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new myFrame();
}
});
}
}
Любая помощь была бы принята с благодарностью. :)
@mascoj Я ценю, что вы пытаетесь помочь, но я не думаю, что вы понимаете, чего я пытаюсь достичь. Возможно, я недостаточно объясняю это. Дай мне попробовать снова. –
Если у меня есть диалоговое окно с файлом, в котором есть параметр выбора FILES_ONLY, и я устанавливаю выбранный файл, он открывает диалоговое окно файла в родительский каталог файла и помещает полный путь файла в поле «Имя файла» диалогового окна. Это желаемое поведение для папок. –
Если у меня есть диалоговое окно с файлом, в котором есть параметр выбора DIRECTORIES_ONLY, у меня нет способа указать значение, которое появится в поле «Имя папки» диалогового окна. Если я использую setCurrentDirectory, он открывается в это место без ничего в поле «Имя папки». Если я установилSelectedFile в путь к каталогу, он использует родительский каталог для CurrentDirectory при открытии диалогового окна, но поле «Имя папки» снова остается пустым. –