"n".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);
}
}
}
}
어떤 조언을 주셔서 감사합니다. 나는 이미 아이디어를 잃어 버렸다. 영어로 죄송합니다.
* "읽는 방법이 있지만 더 많은 동일한 파일을로드하는 데 문제가 있습니다."* 이미 열린 파일에 대해 '해당 탭으로 이동'(또는 GUI에 적합한 모든 항목)해야합니다. 또한 사용자에게 한 번에 파일 그룹을 여는 방법을 제안한 다음 특정 UML 다이어그램의 모든 파일을 선택할 수 있습니다. 물론, 실패하면 사용자 정의 [FileSystemView] (http://docs.oracle.com/javase/7/docs/api/javax/swing/filechooser/FileSystemView.html)를 사용할 수도 있습니다. –
사실입니다. 가장 큰 문제는 사용자가이 판독 방법을 만드는 것이 가장 좋을지 모르겠다는 것입니다. 한 번에 여러 개의 파일을 선택할 수 있지만 (문제는 있지만 사용자에게 친숙함), 같은 파일을 허용하는 경우 (동일한 파일을 허용하지 않는 것이 좋습니다) 다음과 같은 문제가 발생할 수 있습니다. UML 다이어그램을 만들 때 발생합니까? 반대로,이 방법에 무엇을 추가하는 것이 좋을까요? 아이디어를 제공해 주셔서 감사합니다. – avalagne