
- vlcj Tutorial
- vlcj - Home
- vlcj - Overview
- vlcj - Environment Setup
- Handling Operations
- vlcj - Play
- vlcj - Pause
- vlcj - Rewind
- vlcj - Seek
- Handling Events
- vlcj - Playing
- vlcj - Finished
- vlcj - Error
- vlcj - Mouse Events
- vlcj - Keyboard Events
- Utilities
- vlcj - Audio Player
- vlcj - Marquee
- vlcj - Logo
- vlcj - Media Information
- vlcj - Full Screen Video
- vlcj - Audio Equalizer
- vlcj - Overlay
- vlcj Useful Resources
- vlcj - Quick Guide
- vlcj - Useful Resources
- vlcj - Discussion
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
vlcj - Handling Mouse Events
Let's enhance the application further in which we'll update vlcj - Error loading Video Event chapter with Mouse events handling capability.
Handling Mouse Events
Add mouse event handlers using following syntax (Template method)−
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() { @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseWheelMoved(MouseWheelEvent e) { } };
Or we can add mouse event handler using following syntax (Listener method)−
Component videoSurface = mediaPlayerComponent.videoSurfaceComponent(); videoSurface.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { } }); videoSurface.addMouseWheelListener(new MouseWheelListener() { @Override public void mouseWheelMoved(MouseWheelEvent e) { } });
In case of Listener method on windows, we need to disable native mouse input handling using following syntax.
mediaPlayerComponent.mediaPlayer().input().enableMouseInputHandling(false);
When we use mouse within a video surface then mouse event will be raised.
Example
Open project mediaPlayer as created in Environment Setup chapter in Eclipse.
Update App.java with following code−
App.java
package com.tutorialspoint.media; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import uk.co.caprica.vlcj.player.base.MediaPlayer; import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent; public class App extends JFrame { private static final long serialVersionUID = 1L; private static final String TITLE = "My First Media Player"; private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4"; private final EmbeddedMediaPlayerComponent mediaPlayerComponent; private JButton playButton; private JButton pauseButton; private JButton rewindButton; private JButton skipButton; public App(String title) { super(title); mediaPlayerComponent = new EmbeddedMediaPlayerComponent() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")"); } @Override public void mouseWheelMoved(MouseWheelEvent e) { super.mouseWheelMoved(e); System.out.println("Mouse wheel moved. " + e.getScrollAmount()); } @Override public void playing(MediaPlayer mediaPlayer) { super.playing(mediaPlayer); System.out.println("Media Playback started."); } @Override public void finished(MediaPlayer mediaPlayer) { super.playing(mediaPlayer); System.out.println("Media Playback finished."); } @Override public void error(MediaPlayer mediaPlayer) { SwingUtilities.invokeLater(new Runnable() { public void run() { System.out.println("Failed to load Media."); } }); } }; } public void initialize() { this.setBounds(100, 100, 600, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { mediaPlayerComponent.release(); System.exit(0); } }); JPanel contentPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(mediaPlayerComponent, BorderLayout.CENTER); JPanel controlsPane = new JPanel(); playButton = new JButton("Play"); controlsPane.add(playButton); pauseButton = new JButton("Pause"); controlsPane.add(pauseButton); rewindButton = new JButton("Rewind"); controlsPane.add(rewindButton); skipButton = new JButton("Skip"); controlsPane.add(skipButton); contentPane.add(controlsPane, BorderLayout.SOUTH); playButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediaPlayerComponent.mediaPlayer().controls().play(); } }); pauseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediaPlayerComponent.mediaPlayer().controls().pause(); } }); rewindButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000); } }); skipButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { mediaPlayerComponent.mediaPlayer().controls().skipTime(4000); } }); this.setContentPane(contentPane); this.setVisible(true); } public void loadVideo(String path) { mediaPlayerComponent.mediaPlayer().media().startPaused(path); } public static void main( String[] args ){ try { UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { System.out.println(e); } App application = new App(TITLE); application.initialize(); application.setVisible(true); application.loadVideo(VIDEO_PATH); } }
Run the application by right clicking the file and choose run as Java Application. After a successful startup, if everything is fine then it should display the following result −

Now click within the video and you will see a messages in console like follows−
Media Playback started. Media Playback started. Mouse Clicked. (377,180) Mouse Clicked. (377,180) Mouse Clicked. (356,120) Media Playback finished.