Hilfeee :(

malatya44

Mitglied
Halloooo, wäre sehr dankbar wenn ihr mir helfen könntet
finde den fehler nicht :((
FEHLER: "AWT-EventQueue-0" java.lang.NullPointerException

Java:
package gui.panel;


import java.util.Date;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;


import gui.UserGUI;


import javax.swing.JPanel;


import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;


import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;


import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Component;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListCellRenderer;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;

public class VideoPanel extends JPanel
{

	/**
	 * The standard aspect ratios.
	 */
	private static final String[][] ASPECTS =
	{
	{ "<choose...>", null },
	{ "16:10", "16:10" },
	{ "16:9", "16:9" },
	{ "1.85:1", "185:100" },
	{ "2.21:1", "221:100" },
	{ "2.35:1", "235:100" },
	{ "2.39:1", "239:100" },
	{ "5:3", "5:3" },
	{ "4:3", "4:3" },
	{ "5:4", "5:4" },
	{ "1:1", "1:1" } };

	private MediaPlayerFactory factory;
	private EmbeddedMediaPlayer mediaPlayer;
	private CanvasVideoSurface videoSurface;

	private JFrame frame;
	private JPanel contentPane;
	private JPanel videoPane;
	private Canvas videoCanvas;
	private JPanel controlsPane;
	private JPanel allPanel ;
	private JLabel standardAspectLabel;
	private JComboBox standardAspectComboBox;
	private JLabel lblStart;
	private JLabel lblPause;
	private JLabel lblStop;
	private JButton btnStartStream;
	private boolean streaming = true;
	private boolean playing = true;
	FileOutputStream fout;
	private UserGUI gui;
	String filename;

	/**
	 * Create the panel.
	 */
	public VideoPanel(UserGUI gui)
	{
		 NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C://Program Files/VideoLAN/VLC");
			Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
		this.gui = gui ;
		factory = new MediaPlayerFactory("--no-video-title-show");
	    mediaPlayer = factory.newEmbeddedMediaPlayer();
	    
	    videoPane = new JPanel();
	    videoPane.setBorder(new CompoundBorder(new LineBorder(Color.black, 1), new EmptyBorder(0, 0, 0, 0)));
	    videoPane.setLayout(new BorderLayout());
	    videoPane.setBackground(Color.white);
	    
	    videoCanvas = new Canvas();
	    videoCanvas.setBackground(Color.white);
	    videoCanvas.setSize(720, 350);


	    videoPane.add(videoCanvas, BorderLayout.CENTER);
	    
	    videoSurface = factory.newVideoSurface(videoCanvas);
	    
	    mediaPlayer.setVideoSurface(videoSurface);
	    
	    standardAspectLabel = new JLabel("Standard Aspect:");
	    standardAspectLabel.setDisplayedMnemonic('s');
	    
	    standardAspectComboBox = new JComboBox(ASPECTS);
	    standardAspectComboBox.setEditable(false);
	    standardAspectComboBox.setRenderer(new DefaultListCellRenderer() {
	      @Override
	      public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
	        JLabel l = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
	        String[] val = (String[])value;
	        l.setText(val[0]);
	        return l;
	      }
	    });
	   
	    standardAspectLabel.setLabelFor(standardAspectComboBox);
	    
		lblPause = new JLabel(reziseImage(("/gui/res/gtk-media-pause.png")));
	    
		lblStart = new JLabel(reziseImage("/gui/res/gtk-media-play-ltr.png"));
		
		
		lblStop = new JLabel(reziseImage("/gui/res/gtk-media-stop.png"));
		lblStop.setEnabled(false);
		 btnStartStream = new JButton("Start stream");
		
	    controlsPane = new JPanel();
	    controlsPane.setLayout(new BoxLayout(controlsPane, BoxLayout.X_AXIS));
	    controlsPane.add(standardAspectLabel);
	    controlsPane.add(Box.createHorizontalStrut(4));
	    controlsPane.add(standardAspectComboBox);
	    controlsPane.add(Box.createHorizontalStrut(5));
	    controlsPane.add(btnStartStream);
	    controlsPane.add(lblStart);
	    controlsPane.add(Box.createHorizontalStrut(4));
	    controlsPane.add(lblStop);
	    controlsPane.add(Box.createHorizontalStrut(4));
	    controlsPane.add(lblPause);
	 
	    
	    contentPane = new JPanel();
	    contentPane.setBorder(new EmptyBorder(16, 16, 16, 16));
	    contentPane.setLayout(new BorderLayout(16, 16));
	    contentPane.add(videoPane, BorderLayout.CENTER);
	    contentPane.add(controlsPane, BorderLayout.SOUTH);
	    //*
	    frame = new JFrame("Video streaming");
	    frame.setContentPane(contentPane);
	    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	    
	    frame.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
        });
	    
	    frame.pack();
	    frame.setVisible(true);
	    //*/
	    //mediaPlayer.playMedia("tbbt.mp4");
	    
//	    contentPane.setVisible(true);
	    //allPanel.add(frame);
	  //  gui.add(allPanel);
	    
	    standardAspectComboBox.addActionListener(new ActionListener() {
	      @Override
	      public void actionPerformed(ActionEvent e) {
	        Object selectedItem = standardAspectComboBox.getSelectedItem();
	        if(selectedItem != null) {
	          String[] value = (String[])selectedItem;
	          mediaPlayer.setAspectRatio(value[1]);
	        }
	      }
	    });

	    btnStartStream.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                    fireButtonStartStreaming();
            }
	    });
	    
	    lblStart.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				fireButtonPlay();
			}
		});
	    
	    lblStop.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				fireButtonPlay();
			}
		});
	    
	    lblPause.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				mediaPlayer.pause();
			}
		});
	    
	}

	private void formWindowClosed(java.awt.event.WindowEvent evt){
		//System.out.println("coucou");
		frame = null;
		gui.fireButtonCloseTab();
	}
	
	/*
	 * mediaPlayer = new EmbeddedMediaPlayerComponent(); scrollPane.setViewportView(mediaPlayer); setLayout(groupLayout);
	 */
	private ImageIcon reziseImage(String path)
	{
		ImageIcon getImg = new ImageIcon(Toolkit.getDefaultToolkit().getImage(UserGUI.class.getResource(path)));
		Image img = getImg.getImage();
		Image newimg = img.getScaledInstance(32, 32,  java.awt.Image.SCALE_SMOOTH);  
		return new ImageIcon(newimg); 
	}
	public boolean getStreaming()
	{
		return streaming;
	}

	public void fireButtonStartStreaming()
	{
		if (!streaming)
		{
			filename = new Date(System.currentTimeMillis()).toString().replaceAll(" ", "_") + ".mp4";
			try
			{
				fout = new FileOutputStream(new File(filename));
				gui.fireStartVideoStream();
				btnStartStream.setText("Stop Streaming");
				streaming = true;
			} catch (FileNotFoundException e)
			{
				gui.getGUI().logErrTxt("Cannot create output file for video streaming");
			}
		} else
		{
			gui.fireStopVideoStream();
			streaming = false;
		}
	}
	
 
	public void fireButtonPlay() {
		if(!playing) {
			mediaPlayer.playMedia(filename);
			lblStart.setEnabled(false);
			lblStop.setEnabled(true);
			playing = true;
		}
		else {
			mediaPlayer.stop();
			lblStart.setEnabled(true);
			lblStop.setEnabled(false);
			playing = false;
		}
	}
	

	public void addVideoBytes(byte[] data)
	{
		try
		{
			fout.write(data);
		} catch (IOException e)
		{
			gui.getGUI().logErrTxt("Error while writing in video file");
		}
	}
}
 

malatya44

Mitglied
Erstmal danke.
Um genau zu sein:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gui.UserGUI.fireStopVideoStream(UserGUI.java:230)
at gui.panel.VideoPanel.fireButtonStartStreaming(VideoPanel.java:271)
at gui.panel.VideoPanel$4.actionPerformed(VideoPanel.java:209)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(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$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.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)
 

njans

Top Contributor
Die Variable initialisieren.

Wenn du so einen Wust hast, solltest du dir vielleicht nochmal überlegen, das ganze etwas strukturierter aufzubauen.
 

Saheeda

Top Contributor
@malatya

In Zeile 101 sagst du nur, _dass_ es ein Objekt namens gui gibt, weißt ihm aber keinen Wert zu. Damit hat der Kompiler nichts, womit er arbeiten kann.
 

Network

Top Contributor
@malatya

In Zeile 101 sagst du nur, _dass_ es ein Objekt namens gui gibt, weißt ihm aber keinen Wert zu. Damit hat der Kompiler nichts, womit er arbeiten kann.

Die JRE, nicht der 'C'ompiler.


@malatya44
Java NullPointerException

Deine Variable ist leer. Du solltest unbedingt lernen wie man Fehlermeldungen liest.

Zum Zeitpunkt wenn du versuchst
Java:
gui.fireStopVideoStream();
aufzurufen, enthält die Variable "gui" noch kein Objekt des Typs "UserGUI".

Wenn du
Java:
new VideoPanel( gui );
irgendwo in deinem Code aufrufst, musst du schon eine UserGUI mitgeben ala
Java:
new VideoPanel( new UserGUI() );
 

malatya44

Mitglied
ähhm erstmal danke..
Hab ja den quelltext geschrieben, wärst du bitte so nett und fügst die zeilen ein..
sry bin grad verpeilt hab die ganze nacht nicht geschlafen und ich raff es einfach nicht
 

Joose

Top Contributor
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gui.UserGUI.fireStopVideoStream(UserGUI.java:230)

So da steht genau die Klasse, Methode und Zeile der Datei in welcher der Fehler passiert.
Praktisch wäre uns natürlich den Code von der richtigen Klasse
Code:
UserGUI
zur Verfügung zu stellen.

Am Problem ändert das nicht viel, etwas wurde nicht initialisiert. Nun liegt es an dir die Stelle mit diesen 2 Zeilen zu lokalisieren und zu beheben! Sollte das nicht klappen kannst du ja wieder fragen (und dabei sagst du uns natürlich die Stelle wo das Problem liegt und auch was du schon probiert hast!)
 

ssoul26

Bekanntes Mitglied
Halte doch einfach im Debug-Modus bei NullPointer-Exeption an. Dann Untersuch die ganzen Elemente und du wirst sicher selber draufkommen, wo das Problem liegt. Geht doch eigentlich ganz einfach :)

By the way gaziantep27 ;)
 

lawila

Gesperrter Benutzer
ich wiederhole mal meine antwort da ja die lieben admins der meinung waren es löschen zu müssen (wie war das mit freier meinugs-äußerung und zensur ? ... nerver mind)

guckt mal bitte alle in den stacktrace

at gui.UserGUI.fireStopVideoStream(UserGUI.java:230)

ergo : irgendwas in der klasse UserGUI.java in zeile 230 ist null > bitte mal klasse UserGUI posten



@njans
auch dir gegenüber noch mal die antwort
Java:
gui.fireStopVideoStream();

Hast du gui jemals initialisiert?
du weist schon das diese frage mal sowas von dermaßen falsch ist
deine frage würde implizieren das "gui" an dieser stelle NULL wäre, was aber laut stack gar nicht sein kann denn sonst würde die von mir oben zitierte zeile im stack fehler
ergo : das objekt "gui" in der klasse VideoPanel ist definitiv NICHT null ...


@Saheeda
@malatya

In Zeile 101 sagst du nur, _dass_ es ein Objekt namens gui gibt, weißt ihm aber keinen Wert zu. Damit hat der Kompiler nichts, womit er arbeiten kann.
ebenfalls komplett falsch

mal von abgesehen das man compiler mit C schreibt ist das problem eine runtime-exception > tritt also erst zur laufzeit auf

und die stelle mit 101 war gar nicht mal so falsch ... du hättest aber mal weiter lesen sollen

in zeile 107 wird dem konstruktor ein objekt übergeben und in 111 dem member zugewiesen, damit ist das objekt vorhanden


@Network
Wenn du
Java:
new VideoPanel( gui );
irgendwo in deinem Code aufrufst, musst du schon eine UserGUI mitgeben ala
Java:
new VideoPanel( new UserGUI() );

DAS ist doch jetzt wohl nicht dein ernst oder ?
weist du wozu DAS führen würde ? entweder dazu das TO plötzlich gleich 2 frames offen hätte (falls UserGUI z.b. von JFrame erbt) oder alle änderungen die dann auf dieses lokale (und im übrigen shadow) objekt gemacht würden würden dann die eigentlich GUI nicht verändern

lern bitte noch mal selbst den umgang mit GUIs




um es kurz zu machen : alle bisherigen antworten sind entweder kompletter unsinn oder sind schlicht falsch

die einzig halbwegs vernünftige antwort kam von Joose der darauf hingewiesen hat wie diese exception zu lesen ist und das der code der klasse UserGUI fehlt


@ssoul26
einen de-bugger halte ich beim wissesnstand von TO übertrieben, wenn auch natürlich sonst korrekte vorgehensweise





so liebe admins, und wenn ihr der meinung seid euch durch diesen post immer noch angegriffen zu fühlen ... dann schreibt TO wenigstens was das problem ist statt einfach stillschweigend meine posts zu löschen
ich kann nichts dafür wenn es hier einige "möchte-gern-spezis" gibt einen gequirlten schrott von sich geben und so nicht nur dem TO nicht helfen sondern das problem noch verschlimmern

ich habs lediglich versucht grade zu rücken und richtig zu erklären ... wenn ihr damit n problem habt dann frage ich mich wofür es den noob bereich gibt und was es usern die den hier angezeigten das recht gibt hier solche falschen posts zu tätigen ... vielleicht solltet ihr mal lieber darüber nachdenken und "im sinne TO ne lösung posten" statt einfach nur wild zu löschen und zu sperren ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Brauche ganz dringend HILFEEE! Math random Java Basics - Anfänger-Themen 19

Ähnliche Java Themen


Oben