0

I intend to use JavaFX to play mp3 file. For some reason, I have to use swing component to build UI; I am using JLayeredPane now to overlap Jcomponents. So I really have no chances to use JFXPane.

I checked Java FX Null Pointer Exception when using Media Player at javafx.scene.media.MediaPlayer.init and add

Platform.setImplicitExit(false);

but java.lang.NullPointerException still exists.

complete trace,

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException*
*at ClockFrame$ClockMMPlayer.play(ClockFrame.java:110)
at ClockFrame.mouseDragged(ClockFrame.java:148)
at java.awt.Component.processMouseMotionEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)*** 

Any comments are welcome and appreciated.

alarm.mp3, https://app.box.com/s/buhcscs4do4r3m8yi9n5coqatvl2c2y2

How to use test code: run and mouse drag on the panel, and then NullPointerException shows.

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.swing.*;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class ClockFrame extends JFrame implements MouseListener,     MouseMotionListener{
    ClockMMPlayer mmPlayer;
    public ClockFrame(){
        int frameWidth = 1000;
        int frameHeight=1000;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setPreferredSize(new Dimension(frameWidth, frameHeight));
        pack();
        setVisible(true);           
        addMouseMotionListener(this);
        addMouseListener(this);        
        mmPlayer=new ClockMMPlayer("./res/sound/alarm.mp3");
}

 class ClockMMPlayer extends Application{
        MediaPlayer mediaPlayer;
        Media media;
        JFXPanel fxPanel;
        public void start(Stage stage) {

        }
        public ClockMMPlayer(String filePath) {
            assert filePath.length()>0; 
            JFXPanel fxPanel = new JFXPanel();
            Platform.setImplicitExit(false);
            Media m = new Media(new File(filePath).toURI().toString());
            MediaPlayer mediaPlayer = new MediaPlayer(m);
        }

        public void play(){mediaPlayer.play();}
 }
@Override
public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub

}


@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub


}


@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}


@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
}


@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub
}

@Override
public void mouseDragged(MouseEvent e) {

    mmPlayer.play();

}


@Override
public void mouseMoved(MouseEvent arg0) {
    // TODO Auto-generated method stub

}
public static void main(String[] a) {
    new ClockFrame();
}



}
Community
  • 1
  • 1
Yu Fang
  • 520
  • 5
  • 17

0 Answers0