Я создаю программу, функция которой заключается в том, что чтение «.txt» или .java-файлов и этих файлов создает UML-диаграмму. У меня есть метод чтения, но я столкнулся с проблемой загрузки более одинаковых файлов. Я хотел бы отказаться от загрузки одинаковых файлов, потому что это создает проблемы с созданием UML-диаграммы.Как отменить выбор того же файла с помощью JFileChooser
Я пытаюсь решить эту проблему, чтобы сохранить загруженный файл в ArrayList и проверить каждый файл нагрузки на файлы, сохраненные в ArrayList, где находятся предыдущие загруженные файлы.
Следующая проблема заключается в том, что я нажимаю кнопку «Да» или «Нет», когда я выбираю один и тот же файл, файл одинаково загружен.
И когда я создаю этот ответ, я нашел следующую проблему. Когда пользователь выбирает более одного файла, ArrayList не знает, как добавить сразу два файла.
Есть ли какой-либо вариант, как я мог бы решить эту проблему более легко?
ArrayList<String> filenames = new ArrayList<String>();
JTabbedPane tabbedPaneUML_Files = new JTabbedPane();
private void readFiles() {
JFileChooser fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);
FileNameExtensionFilter fileFilter =
new FileNameExtensionFilter("Only .txt a .java files",
"txt", "java");
fc.setFileFilter(fileFilter);
int returnValue = fc.showOpenDialog(this);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File[] files = fc.getSelectedFiles();
File file;
tabbedPaneUML_Files.addTab("UML diagram", panelUML);
for (int i = 0; i < files.length; i++) {
file = files[i];
for (int j = 0; j < filenames.size(); j++) {
if (filenames.get(i).equals(fc.getSelectedFile().getName())) {
Object[] options = {"Yes", "No"};
int answer = JOptionPane.showOptionDialog(this,
"Unable to load the same files! To retrieve the other files?",
"Load new file", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null, options, options[0]);
if(answer == 0) {
readFiles();
}
}
}
filenames.add(file.getName());
JTextArea loadCode = new JTextArea();
JScrollPane scrollingFile = new JScrollPane();
scrollingFile.setViewportView(loadCode);
tabbedPaneUML_Files.addTab("" + file.getName(), scrollingFile);
int ch;
try {
Reader charsReader =
new InputStreamReader(new FileInputStream(file),
"UTF-8");
while ((ch = charsReader.read()) != -1) {
loadCode.append(Character.toString((char) ch));
}
loadCode.setSelectionStart(0);
loadCode.setSelectionEnd(0);
loadCode.setEditable(false);
} catch (FileNotFoundException ex) {
Logger.getLogger(HlavniOkno.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(HlavniOkno.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Благодарим за любые советы. Я уже потерял идеи. Извините за мой английский.
* «У меня есть метод чтения, но я столкнулся с проблемой загрузки более одного файла». * Вы должны просто «перевернуть на эту вкладку» (или что-то подходящее для графического интерфейса) для уже открытого файла. Также подумайте о том, чтобы предложить пользователю открыть группу файлов сразу - тогда они могут выбрать все файлы для конкретной диаграммы UML. Конечно, в противном случае вы можете использовать пользовательский [FileSystemView] (http://docs.oracle.com/javase/7/docs/api/javax/swing/filechooser/FileSystemView.html). –
Это правда. Моя самая большая проблема заключается в том, что я не знаю, как было бы лучше для пользователей создать этот метод чтения. Если вы разрешаете одновременно выбирать несколько файлов (= проблемы, но удобны для пользователя), если вы разрешаете один и тот же файл (я думаю, хорошо, что я не разрешаю один и тот же файл) и т. Д. У вас может быть проблема, которая могла бы возникают при создании диаграммы UML? Или, наоборот, что было бы неплохо добавить к этому методу? Спасибо за ваши идеи. – avalagne