JLayer - как сделать пауза/продолжить?

Я хочу сделать 2 кнопки. Одна будет кнопка play, а другая pause. У меня уже есть код, но он работает не так как нужно. Если остановить проигрывание и продолжить, то музыка продолжит играть но в другом месте.

Код:


        JFrame frmAdvancedaudioplayer = new JFrame();
        frmAdvancedaudioplayer.setResizable(false);
        frmAdvancedaudioplayer.setTitle("AdvancedAudioPlayer 0.1(Alpha)");
        frmAdvancedaudioplayer.setSize(572, 183);
        frmAdvancedaudioplayer.setLocationRelativeTo(null);
        frmAdvancedaudioplayer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmAdvancedaudioplayer.getContentPane().setLayout(null);

JButton btnNewButton = new JButton("\u25B6");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    play();
                } catch (FileNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (JavaLayerException e1) {
                    // TODO Auto-generated catch block
                    JOptionPane.showMessageDialog(null, "Unable to play file");
                    e1.printStackTrace();
                }
            }
        });
        btnNewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
        btnNewButton.setToolTipText("Play");
        btnNewButton.setBounds(153, 0, 64, 26);
        frmAdvancedaudioplayer.add(btnNewButton);
        
        JButton btnNewButton_1 = new JButton("\u275A\u275A");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                pause();
            }
        });
        btnNewButton_1.setCursor(new Cursor(Cursor.HAND_CURSOR));
        btnNewButton_1.setToolTipText("Pause");
        btnNewButton_1.setBounds(220, 0, 64, 26);
        frmAdvancedaudioplayer.add(btnNewButton_1);

static void play() throws FileNotFoundException, JavaLayerException {
        SwingWorker<Void, Void> sworker = new SwingWorker<Void, Void>(){

            @Override
            protected Void doInBackground() throws Exception {                  
                if(file != null) {
                    fis = new FileInputStream(file);
                    playerMP3 = new AdvancedPlayer(fis);
                    playerMP3.play(pausedOnFrame, Integer.MAX_VALUE);           
                 }else if(file == null) {
                    openfile();
                    fis = new FileInputStream(file);
                    playerMP3 = new AdvancedPlayer(fis);
                    playerMP3.play(); 
                 }
                
                return null;
            }
            
        };
        sworker.execute();
    }
    
    static void pause() {   
        playerMP3.setPlayBackListener(new PlaybackListener() {
            @Override
            public void playbackFinished(PlaybackEvent event) {
                pausedOnFrame = event.getFrame();
            }
        });
        playerMP3.stop();
    }

Ответы (0 шт):