Я разрабатываю интерфейс, в котором пользователь может выбрать файл с помощью JFileChooser
(инициированный через JButton
) и сохранить его строковый путь в таблице для последующего использования. Мой код для выбора файла содержится в классе TheHandler
, а моя таблица находится в классе FilePanel
. У меня есть значение filePath
, направленное на tablePath
класса FilePanel
, так что я могу хранить строки в таблице.Java - хранить строки в таблице с помощью JFileChooser, получить заданные методы?
Однако мой вопрос заключается в том, что tablePath
возвращается null
, который я считаю либо потому, что:
1) filePath
содержится в пределах void
метода
2) значение дается tablePath
до того, как пользователь выбирает файл
или комбинация 1) и 2). Поэтому мой вопрос заключается в том, как я могу извлечь значение filePath
, чтобы его можно было принять tablePath
после того, как пользователь выберет файл?
Я думаю, что нужно получить и установить методы, но я только начал изучать их, и из примеров, с которыми я столкнулся, я думаю, что мне нужно будет использовать их в конструкторе actionPerformed(ActionEvent event)
, но если это так, я я полностью отбрасываю, как это сделать. Любая помощь будет принята с благодарностью.
TheHandler
класс:
public static class TheHandler implements ActionListener {
String filePath;
public void actionPerformed(ActionEvent event) {
Component parent = null;
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("TIFF Images", "tif", "tiff");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
filePath = chooser.getSelectedFile().toString();
//System.out.println(filePath);
if (returnVal == JFileChooser.APPROVE_OPTION) {
ImagePlus picture = IJ.openImage(filePath);
picture.show();
}
}
}
FilePanel
класс:
public class FilePanel extends JPanel {
public FilePanel() {
setLayout(new GridLayout(1, 0));
TheHandler thePath = new TheHandler();
String tablePath = thePath.filePath;
System.out.println(filePaths); // outputs null, this line runs before file is chosen?
String col[] = {"Loaded TIFF Files"};
String[] tiffFiles = {filePaths, filePaths}; // Vector or list may be more useful?
DefaultTableModel tableModel = new DefaultTableModel(col, 0);
tableModel.addRow(tiffFiles);
}
}
О, прошу прощения, он остался без моего сообщения, но у меня есть ActionListener в сочетании с JButton, чтобы инициировать процесс: addBtn.addActionListener (новый TheHandler()); Это имеет смысл, хотя, позвольте мне посмотреть, смогу ли я получить эту рабочую реальную скорость – Rosie
Ага, так что исправьте меня, если я ошибаюсь, но сам внутренний_Path не может быть вызван, но, создав метод getFilePath(), innerPath принимает значение innerFilePath, когда условия выполняются, и поскольку getFilePath() является общедоступным методом, который возвращает innerFilePath, этот метод можно вызвать в других классах. – Rosie
На самом деле у меня есть другой вопрос, если вы не возражаете. Созданный вами метод вытащил из метода void filechooser (который даст мне нужный путь), но при вызове этого метода в другом классе откроется второй filechooser (первый из них при нажатии кнопки загрузки). Есть ли способ получить только возвращаемое значение метода getFilePath(), чтобы я мог использовать это результирующее значение строки в другом классе? – Rosie