Я добавил несколько файлов в свой JList
через JFileChooser
с помощью vector
. Я пытаюсь сделать это систематически, проверяя, доступны ли определенные файлы в JList
или нет. Например, если я добавлю файл с именем «abc.xml», я сразу же проверю, существует ли этот файл в JList
или нет.дублирование файлов в java
Также я хотел бы проверить, повторяется ли файл только один раз. Если он повторяется несколько раз («abc.xml», «abc.xml», ...), должно появиться сообщение об ошибке, указывающее, что файл добавляется несколько раз.
Я размещаю полный текст здесь;
public Test()
{
setTitle("EXAMPLE");
getContentPane().setLayout(new MigLayout("", "[][][][][grow][][][][][][][]
[][][grow][grow][][][grow][][][][][][][grow]", "[][][][][][][][grow]
[grow][][][][][][][grow][]"));
final JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fileChooser.setMultiSelectionEnabled(true);
getContentPane().add(fileChooser, "cell 0 1 3 16");
JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, "cell 23 2 3 15,grow");
vector = new Vector<File>();
final JList list = new JList(vector);
scrollPane.setViewportView(list);
JButton btnNewButton = new JButton(" Add ");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for (File file : fileChooser.getSelectedFiles()) {
vector.addElement(file);
}
//System.out.println("Added..!!");
list.updateUI();
}
});
getContentPane().add(btnNewButton, "cell 4 0");
JButton btnNewButton_1 = new JButton(" Remove ");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(list.getSelectedIndices().length > 0) {
int[] selectedIndices = list.getSelectedIndices();
for (int i = selectedIndices.length-1; i >=0; i--) {
vector.removeElementAt(i);
}
}
//System.out.println("Removed..!!");
list.updateUI();
}
});
getContentPane().add(btnNewButton_1, "cell 4 2");
JButton btnNewButton_2 = new JButton(" Check ");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
***File file = fileChooser.getSelectedFile();
boolean found = false;
for (File f : vector) {
if (file.getName().equals(f.getName())) {
found = true;
break;
}
}
if (!found) {
vector.add(file);
fireIntervalAdded(this, vector.size()-1, vector.size()-1);
} else {
// Abusive usage of an exception
JOptionPane.showMessageDialog(null, "File " + file.getName() + "
already added");
}***
});
public static void main(String args[]) {
// Create an instance of the test application
Test mainFrame = new Test();
mainFrame.pack();
mainFrame.setVisible(true);
}
Что я понимаю - это поле с сообщением о том, что файл уже добавлен, даже когда файл встречается только один раз.
Что я ожидаю, когда файл добавляется один раз, он ничего не должен отображать. Но когда он добавляется несколько раз, только тогда он должен отображать сообщение, что файл уже добавлен.
Может ли кто-нибудь помочь?
aaaaah! (форматирование кода) ужас! – andersoj
Код не выглядит совсем рядом с тем, что вы хотите сделать? Можете ли вы отформатировать его для удобства чтения? – maress
Вы хотите, чтобы я опубликовал весь код? если так, я могу это сделать. – dmurali