Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    4

    finestra che si chiude java - lettore mp3

    ciao a tutti, premetto che sono inesperto, sto creando un piccolo lettore mp3 (con interfaccia grafica) su netbeans utilizzando le librerie messe a disposizione da javazoom, ma ho un piccolo problema (per questo sono qui ahah): quando la canzone finisce il programma si chiude. come si può fare affinché rimanga aperta la finestra del lettore mp3? Grazie.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ah boh, non sappiamo neanche che codice hai scritto...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    4
    ahah si scusami ecco:


    import javax.swing.JFileChooser;
    import javax.swing.*;
    import javax.swing.filechooser.FileFilter;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javazoom.jl.player.Player;
    import javazoom.jl.decoder.JavaLayerException;

    public class Mp3 {

    public Player mp3;
    public File file;
    public FileInputStream fis;

    Mp3() throws JavaLayerException{

    //Frame
    JFrame frame = new JFrame();
    frame.setTitle("Letore mp3");
    frame.setSize(350,125);

    //Panel
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    JPanel panel1 = new JPanel();
    panel1.setLayout(new BorderLayout());
    JPanel panel2 = new JPanel();
    panel2.setLayout(new BorderLayout());

    //Buton
    JButton button1 = new JButton("play");
    JButton button2 = new JButton("stop");
    JButton button3 = new JButton("pausa");
    JButton button4 = new JButton("apri");
    JButton button5 = new JButton("cancella");

    //label
    final JLabel label = new JLabel();
    label.setVerticalAlignment(SwingConstants.CENTER);
    label.setHorizontalAlignment(SwingConstants.CENTER );

    //Elementi aggiunti
    frame.getContentPane().add(panel, BorderLayout.NORTH);
    frame.getContentPane().add(panel1, BorderLayout.CENTER);
    frame.getContentPane().add(panel2, BorderLayout.SOUTH);

    panel.add(button1, BorderLayout.WEST);
    panel.add(button2, BorderLayout.EAST);
    panel.add(button3, BorderLayout.CENTER);

    panel1.add(label);

    panel2.add(button4, BorderLayout.WEST);
    panel2.add(button5, BorderLayout.EAST);

    frame.setVisible(true);

    button4.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    //JFileChooser - apri
    JFileChooser jf = new JFileChooser("/Users/nick/Desktop/MacBook Pro");
    jf.setDialogTitle("Choose a file (mp3)");
    jf.setMultiSelectionEnabled(true);
    jf.setFileFilter(new mp3FileFilter());

    int n = jf.showOpenDialog(null);

    if (n == JFileChooser.APPROVE_OPTION) {

    file = jf.getSelectedFile();
    label.setText(file.getName());

    fis = null;
    try {
    fis = new FileInputStream(file);
    } catch (FileNotFoundException ex) {
    Logger.getLogger(Mp3.class.getName()).log(Level.SE VERE, null, ex);
    }
    try {
    mp3 = new Player(fis);
    } catch (JavaLayerException ex) {
    Logger.getLogger(Mp3.class.getName()).log(Level.SE VERE, null, ex);
    }

    }

    if (n == JFileChooser.CANCEL_OPTION) {
    JOptionPane.showMessageDialog(null, "Non hai selezionato alcun file!!!",
    "File", JOptionPane.INFORMATION_MESSAGE);
    }

    if (n == JFileChooser.ERROR_OPTION) {
    JOptionPane.showMessageDialog(null, "Errore", "Si è verificato un errore!",
    JOptionPane.ERROR_MESSAGE);
    }

    }
    });

    button1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e){

    try{
    mp3.play();
    }catch( Exception e ){
    e.printStackTrace();
    }

    }
    });

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

    }

    private class mp3FileFilter extends FileFilter {

    public boolean accept(File file) {
    if (file.isDirectory()) return true;
    String fname = file.getName().toLowerCase();
    return fname.endsWith("mp3");
    }

    public String getDescription() {
    return "File audio (.mp3)";
    }

    }

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) throws JavaLayerException {

    new Mp3();

    }

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Usa il tag CODE per mantenere l'indentazione del codice o non si capisce nulla.

    Dici che dopo aver eseguito un mp3 l'applicazione termina.

    codice:
    try 
    {
        mp3.play();
    } 
    catch(Exception e)
    {
        e.printStackTrace();
    }
    Non conosco le classi che hai usato. Il metodo play() è bloccante? Ti viene stampato qualcosa nella console, al termine dell'mp3?

    (noto comunque un po' di confusione nel codice, stai mescolando troppe cose in quell'interfaccia, non va bene...)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    4
    No, non viene visualizzato niente. Semplicemente terminata la canzone la finestra si chiude.
    Inoltre quando premo su play la finestra si blocca e non posso chiuderla o premere altri pulsanti (devo aspettare che termini la canzone o chiuderla in basso). So che per evitare questo bisogna usare un thread, ma mi sai dire come?

    Grazie ancora e scusami ma è da poco che uso java (si era capito ahah)

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da nick96
    No, non viene visualizzato niente. Semplicemente terminata la canzone la finestra si chiude.
    Inoltre quando premo su play la finestra si blocca e non posso chiuderla o premere altri pulsanti (devo aspettare che termini la canzone o chiuderla in basso).
    Appunto, è una chiamata bloccante.


    Originariamente inviato da nick96
    So che per evitare questo bisogna usare un thread, ma mi sai dire come?
    http://docs.oracle.com/javase/tutori...runthread.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    4
    ho guardato e ho provato ad inserire un thread ma il problema rimane

    codice:
    try{
              (new PlayerThread()).start();  
              while( !mp3.isComplete() ){
                int position = mp3.getPosition();
                System.out.println( "Position: " + position );
                try{
                  Thread.sleep( 1000 );
                }catch( Exception ee ){
                  ee.printStackTrace();
                }
              }
              }catch( Exception ee ){
              ee.printStackTrace();
              }
    codice:
    class PlayerThread extends Thread{
            
                public void run(){
                
                try{
                    mp3.play();
                }catch( Exception e ){
                    e.printStackTrace();
                }
                }
    hai altri suggerimenti o vedi errori nel thread che ho inserito?

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.