Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    problema audioFile.commit()

    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?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Prendi anche visione del Regolamento interno: ci sono alcune norme da seguire quando si apre una nuova discussione, a partire dal titolo (che deve dare un'informazione generale del problema) al posting del codice (che deve essere indentato e postato con l'uso degli appositi tag CODE).

    Sistemo il tuo post (se il codice è indentato).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    Re: Moderazione

    Originariamente inviato da LeleFT
    Prendi anche visione del Regolamento interno: ci sono alcune norme da seguire quando si apre una nuova discussione, a partire dal titolo (che deve dare un'informazione generale del problema) al posting del codice (che deve essere indentato e postato con l'uso degli appositi tag CODE).

    Sistemo il tuo post (se il codice è indentato).


    Ciao.
    ops...scusate
    cmq nessuno ha idee?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.