Ciao a tutti,
sono nuova del forum, ho un poroblemino con java...
sto facendo un programma per la gestione mp3, molto simile ad Itunes, per un esame all'università.
Devo dare possibilità all'utende di selezionare un mp3 da una tabella globale e modificarne i tag. Ho problemi con questa ultima parte;la modifica dei tag.
il codice è:
codice:
public JDialog_VisEMod_tag (MP3 mp3,listabrani l ,model m,int row){
super();
this.l=l;
this.mp3=mp3;
this.m=m;
Container cn = getContentPane();
JPanel p = new JPanel();
cn.add(p);
setBounds(200,200,300,500);
// visualizzazione dei tag
JLabel jl1= new JLabel("Artista");
jt1 = new JTextField(mp3.getArtista(),20);
jt1.setEditable(true);
Artistanew=jt1.getText();
p.add(jl1);
p.add(jt1);
JLabel jl2= new JLabel("Titolo");
jt2 = new JTextField(mp3.getTitolo(),20);
Titolonew=jt2.getText();
p.add(jl2);
p.add(jt2);
JLabel jl3= new JLabel("Album");
jt3 = new JTextField(mp3.getAlbum(),20);
Albumnew = jt3.getText();
p.add(jl3);
p.add(jt3);
JLabel jl4= new JLabel("Genere");
jt4 = new JTextField(mp3.getGenere(),20);
Generenew = jt4.getText();
p.add(jl4);
p.add(jt4);
JLabel jl5= new JLabel("Percorso file");
jt5 = new JTextField(mp3.getPercorso(),20);
jt5.setEditable(false);
p.add(jl5);
p.add(jt5);
JLabel jl6= new JLabel("Anno");
jt6 = new JTextField(mp3.getAnno(),20);
Annonew = jt6.getText();
p.add(jl6);
p.add(jt6);
/**aggiunta della copertina --> TO DO */
JButton jb = new JButton("Conferma Modifiche");
jb.addActionListener(this);
JButton jb2 = new JButton("Annulla");
p.add(jb);
p.add(jb2);
}
public void actionPerformed(ActionEvent e){
if (e.getActionCommand() =="Conferma Modifiche") {
//creo un nuovo audiofile su cui caricare i tag
AudioFile audioFile=new AudioFile();
try{ //prendo il file dall'mp3 selezionato
//file che in partenza mi era servito per costuire l'mp3
f = mp3.getFile2();
audioFile = AudioFileIO.read(f); //Read the tag contained in the given file.
//ritorna un audio file con il tag letto
}
catch(CannotReadException f){System.out.println(f);}
catch(TagException f){System.out.println(f);}
catch(IOException f){System.out.println(f);}
catch(InvalidAudioFrameException f){System.out.println(f);}
catch(ReadOnlyFileException f){System.out.println(f);}
try{
MP3File nuovo = (MP3File) AudioFileIO.read(f);
System.out.println("Preso da read");
ID3v23Tag tag;
try{
tag = (ID3v23Tag) nuovo.getTag();
System.out.println("Preso da nuovo");}
catch(ClassCastException g){
System.out.println("No tag");
tag=new ID3v23Tag();}
}
catch(IOException f){System.out.println(f);System.out.println("IOExcep");}
catch(CannotReadException f){System.out.println(f);System.out.println("Read Exc");}
catch(TagException f){System.out.println(f);System.out.println("TagException");}
catch(ReadOnlyFileException f){System.out.println(f);System.out.println("ReadOnlyFile");}
catch(InvalidAudioFrameException f){System.out.println(f);System.out.println("Invalid audio frame");}
try{
audioFile.getTag().setAlbum(Album);
audioFile.getTag().setArtist(Artista);
audioFile.getTag().setGenre(Genere);
audioFile.getTag().setTitle(Titolo);
audioFile.getTag().setTrack(Track);
audioFile.getTag().setYear(Anno);
System.out.println("modificato");}
catch(FieldDataInvalidException f){System.out.println(f);}
audioFile.setTag(tag);
try{
audioFile.commit();
System.out.println("salvato");
} //Scrivi le modifiche sul file nel disco.
catch(CannotWriteException f){System.out.println(f);System.out.println("Non riesce a scrivere tag");}
}
} }
row è la riga selezionata che mi viene data da un altro ascoltatore.
Della classe MP3 vi riporto solo il costruttore per capire come sono fatti gli oggetti
codice:
public MP3(File file){
this.file = file;
try {
musica = (MP3File) AudioFileIO.read(file);
}
catch (Exception e)
{
e.printStackTrace();
return;
}
e magari anche il metodo get file:
codice:
public File getFile2()
{
return musica.getFile();
}
ora il problema è : fa tutto il codice, non mi da errori di nessun tipo MA!! il file non viene realmente modificato, quando lo riaggiungo alla tabella ha le caratteristiche di partenza, non quelle modificate..... perchè?
chi mi aiuta?