I have a frame with a list of values where multiple files are displayed.
AtthispointI'mdoingthedeletebuttonsentinel(lastpartcode),inwhichthegoalistodeletethefilefromthedisk,andthejlist.
publicvoidaddContentFrame(){frame.setLayout(newBorderLayout());//listadeficheiros-criadacomoinstanciadaclasseframe.add(listaFicheiros,BorderLayout.WEST);File[]files=newFile(diretoriaExecucao).listFiles(newFileFilter(){@Overridepublicbooleanaccept(Filef){returnf.getName().endsWith(".rtf"); //so aceita ficheiros acabados em .rtf
}
});
// Meter valores aleatorios na lista
// model.addElement("A");
// model.addElement("B");
// model.addElement("C");
for(int i = 0; i < files.length; i++){ //como nao e array percorremos o tamanho por inteiro do array
model.addElement(files[i].getName());
}
//caixa texto onde vai ser apresentado o conteudo do ficheiro c/ ScrollArea
JTextArea caixaTexto = new JTextArea();
JScrollPane scrollArea = new JScrollPane(caixaTexto);
frame.add(scrollArea, BorderLayout.CENTER);
listaFicheiros.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if(!e.getValueIsAdjusting()){
String valorSelecionado = (String) listaFicheiros.getSelectedValue();
//Abrir ficheiro selecionado e meter output numa JTextArea!!
try {
caixaTexto.setText(""); //limpo sempre a CT sempre que inicio a leitura de um ficheiro
BufferedReader br = new BufferedReader(new FileReader(diretoriaExecucao + "/" + valorSelecionado));
while(br.ready()){
String linha = br.readLine();
caixaTexto.append(linha + "\n"); //imprime continuamente as linhas na caixa texto
}
br.close(); //Ficheiro tem de ser sempre fechado
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
});
//botoes - parte inferior janela
JPanel painelBotoes = new JPanel();
painelBotoes.setLayout(new GridLayout(1,3));
JButton new1 = new JButton("new");
new1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
String nomeFicheiroNovo = JOptionPane.showInputDialog(frame, "Qual o nome do novo ficheiro?");
//Criar um ficheiro novo e escrever para dentro dele
File ficheiroNovo = new File(diretoriaExecucao + "/" + nomeFicheiroNovo + ".rtf"); //dentro e a diretoria que queremos gravar ficheiro (em execucao)
//escrever para o ficheiro
try {
PrintWriter printWriter = new PrintWriter(ficheiroNovo); //ESCREVE
printWriter.println("Escreveu ficheiro?"); //O que queremos escrever no ficheiro.
model.addElement(ficheiroNovo.getName()); //adicionar ficheiro à lista para aparecer frame
printWriter.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
});
JButton delete = new JButton("delete");
//Passos: ver ficheiro selecionado, percorre lista, remove ficheiro disco e lista, atualizar lista de ficheiro(atualiza sozinha)
delete.addActionListener(new ActionListener (){
@Override
public void actionPerformed(ActionEvent e){
String ficheiroSelecionado = (String) listaFicheiros.getSelectedValue();
for(int i = 0; i < files.length; i++){
if(files[i].getName().equals(ficheiroSelecionado)){
files[i].delete();
model.removeElement(ficheiroSelecionado);
}
}
}
});
Although I can delete the file and the sentinel does the purpose of it, the console still gives me the following error:
This error occurs on the line:
model.removeElement(ficheiroSelecionado);