Hi, I keep getting the error "Component must be displayed" and cannot solve it. I looked at the SO Questions and tried the solutions, but to no avail. I am trying to implement a JVLC player, an error occurs when I try ".setVideoOutput (canvas1)" in the Vid class
here is the main class.
import java.awt.Component; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.util.logging.Level; import java.util.logging.Logger; public class Main extends javax.swing.JFrame { private LessonPanel lesson; private MultiChoice multiChoice; private Vid video; private int xSize; private int ySize; public Main() throws InterruptedException { Toolkit tk = Toolkit.getDefaultToolkit(); xSize = ((int) tk.getScreenSize().width/2); ySize = ((int) tk.getScreenSize().height/2); this.setSize(xSize, ySize); this.setVisible(true); System.out.print("\nIsDisplayable "+this.isDisplayable()); addVideo(); WindowListener listener = new WindowAdapter() { @Override public void windowClosing(WindowEvent w) { System.exit(0); } }; this.addWindowListener(listener); } public void next(String method) throws InterruptedException{ if(method.equalsIgnoreCase("home")){home();} else if(method.equalsIgnoreCase("Multi")){addMultiChoice();} else if(method.equalsIgnoreCase("Video")){addVideo();} else if(method.equalsIgnoreCase("Visual")){addVisual();} } public void removePanels(Component Comp,String doNext) throws InterruptedException { this.remove(Comp); this.repaint(); next(doNext); } public void home() throws InterruptedException { lesson = new LessonPanel(this); this.add(lesson); this.validate(); this.repaint(); } public void addMultiChoice() throws InterruptedException { multiChoice = new MultiChoice(this); this.add(multiChoice); this.validate(); this.repaint(); } public void addVideo() throws InterruptedException { this.invalidate(); video = new Vid(); this.add(video); this.validate(); this.repaint(); } public void addVisual() throws InterruptedException { } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { try { new Main().setVisible(true); } catch (InterruptedException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } }); } }
and this is the class that gives me an error
import java.awt.Canvas; import java.awt.Color; import org.videolan.jvlc.JVLC; public class Vid extends javax.swing.JPanel { private static String filename ="C:/Users/Public/Videos/Sample Videos/Wildlife.wmv"; private Canvas canvas; public Vid() { init(); } public void init(){ System.out.print("\nReady to play video"); canvas = new java.awt.Canvas(); canvas.setBackground(Color.red); canvas.setSize(400, 400); canvas.setVisible(true); add(canvas); String[] arg = new String[4]; arg[0] = "--intf=dummy"; arg[1] = "--ignore-config"; arg[2] = "--no-plugins-cache"; arg[3] = "--plugin-path=plugins"; JVLC jvlc = new JVLC(arg); jvlc.play(filename); jvlc.setVideoOutput(canvas); } }
Any help would be great! thanks in advance!
source share