Einbinden eines youtube-videos in Eclipse

Mondlandung

Mitglied
Hallo zusammen,

ich hoffe, ich bin hier richtig und ihr könnt mir einen Tipp geben.

Wir müssen von der Schule aus ein Roulette programmieren, das ich ja gerade noch so geschafft habe.
Jetzt würde ich aber im Hintergrund gerne eine Roulette-Animation (Youtube-Video) in das Programm einbinden. Es soll sich einfach das Roulette drehen, bis die Zahl ausgegeben wird.

Gibt es eine einfache! Möglichkeit das in Eclipse zu tun?

Vielen Dank für einen Tipp.

Mondlandung
 

Spin

Top Contributor
Moin,

ein Youtube Video in Eclipse ??? Meinst du Eclipse als Media Player ? Oder meinst du dass dein Java Programm ein Video abspielen soll?

Beim ersten würde ich ein Listener auf eine Button packen, der anschließend dein Browser mit dem youtube link öffnet und nach abspiel wieder schließt :p

Beim zweiten musst du nach Java Media googlen!!!
Java Media Framework :toll:
 

Mondlandung

Mitglied
Vielen Dank,
ich möchte das Video ins Programm mit einbinden, so, dass das Video abspielt, während die Zahl ausgegeben wird, oder dass man im Hintergrund ein "rien ne va plus" hört.
Das wäre also mit Java Media Framework.

Ich google dann mal, aber eine Frage: Ist das kompliziert oder geht das einfach?

VG

Mondlandung
 
Zuletzt bearbeitet:

Mondlandung

Mitglied
Wenn es kompliziert ist, muss ich es lassen. Hab da zu wenig Zeit mich einzuarbeiten.

Trotzdem vielen Dank.

Falls es aber noch ieine einfache Möglichkeit gibt, so was zu machen, bitte melden.

....aber ich seh fast schwarz....

VG

Mondlandung
 
F

Firephoenix

Gast
Oder einfach eine rotierte Grafik, hier mal auf die schnelle (geht sicherlich schöner, aber läuft).

Projektaufbau zum nachbauen:
-src
--img
---roulette.png
--test
---RotatingImagePanel.java

Java:
package test;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class RotatingImagePanel extends JPanel {

    private static final long serialVersionUID = 1L;
    private BufferedImage image;
    private float imageAngle = 0;
    private Updater updater;

    public RotatingImagePanel(BufferedImage image) {
	this.image = image;
	setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
	updater = new Updater(this);
    }

    // sample usage
    public static void main(String[] args) throws IOException {
	BufferedImage image = ImageIO.read(RotatingImagePanel.class
		.getResourceAsStream("/img/roulette.png"));
	JFrame frame = new JFrame("Roulette-Test");
	frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	frame.setLayout(new BorderLayout());
	JPanel buttonPanel = new JPanel();
	final RotatingImagePanel rotatePanel = new RotatingImagePanel(image);
	JButton startButton = new JButton("start");
	startButton.addActionListener(new ActionListener() {

	    @Override
	    public void actionPerformed(ActionEvent e) {
		rotatePanel.startRotate();
	    }
	});
	buttonPanel.add(startButton);
	JButton stopButton = new JButton("stop");
	stopButton.addActionListener(new ActionListener() {

	    @Override
	    public void actionPerformed(ActionEvent e) {
		rotatePanel.stopRotate();
	    }
	});
	buttonPanel.add(stopButton);
	frame.add(buttonPanel, BorderLayout.SOUTH);
	frame.add(rotatePanel, BorderLayout.CENTER);
	frame.pack();
	frame.setVisible(true);
    }

    @Override
    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	Graphics2D g2d = (Graphics2D) g;
	g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
	g2d.rotate(getImageAngle());
	// alternative version falls das bild rechteckig ist
	// g2d.drawImage(image, -getWidth() / 3, -getHeight() / 3,
	// getWidth()/3*2,
	// getHeight()/3*2, null);
	// für runde bilder:
	g2d.drawImage(image, -getWidth() / 2, -getHeight() / 2, getWidth(),
		getHeight(), null);
    }

    public void startRotate() {
	Thread t = new Thread(updater);
	t.setDaemon(true);
	t.start();
    }

    public void stopRotate() {
	updater.stopRunning();
	imageAngle = 0f;
	repaint();
    }

    public float getImageAngle() {
	return imageAngle;
    }

    public void setImageAngle(float imageAngle) {
	this.imageAngle = imageAngle;
    }

    private static class Updater implements Runnable {

	private RotatingImagePanel panel;
	private boolean running;

	public Updater(RotatingImagePanel rotatingImagePanel) {
	    panel = rotatingImagePanel;
	}

	@Override
	public void run() {
	    running = true;
	    while (isRunning()) {
		// Zeitintervall und Gradzahl geben das Tempo und die Bildrate
		// vor
		panel.setImageAngle(panel.getImageAngle() + 0.5F);
		panel.repaint();
		try {
		    Thread.sleep(100);
		} catch (InterruptedException e) {
		    e.printStackTrace();
		}
	    }
	}

	public void stopRunning() {
	    running = false;
	}

	public boolean isRunning() {
	    return running;
	}

    }
}

Gruß
 

Mondlandung

Mitglied
Vielen Dank für die Rückmeldungen, muss mir das übers Wochende noch ein bisschen anschauen.
Aber das einfachste wäre vielleicht die blinkenden Felder. Die rotierende Grafik wäre auch toll, aber ich muusss es leider erklären können :-( , und daran hakt es.

VG

Mondlandung
 
F

Firephoenix

Gast
Hi,
vielleicht nochmal kurz als Erklärung zu meiner Version, schwer ist der Code eigentlich nicht (gui-Code explodiert nur leider immer so schnell auf mehrere 100 Zeilen).

Die Basis besteht aus einer Klasse die von JPanel erbt
Code:
public class RotatingImagePanel extends JPanel
und die paintComponent-Methode überschreibt (die wird von Swing verwendet um das Panel zu zeichnen, und auch diese Methode wird aufgerufen wenn man repaint() auf der Komponente aufruft).

Der Klasse übergebe ich im Konstruktor ein BufferedImage, das dann gezeichnet wird:
Java:
 @Override
    public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(this.getWidth() / 2, this.getHeight() / 2);
    g2d.rotate(getImageAngle());
    // alternative version falls das bild rechteckig ist
    // g2d.drawImage(image, -getWidth() / 3, -getHeight() / 3,
    // getWidth()/3*2,
    // getHeight()/3*2, null);
    // für runde bilder:
    g2d.drawImage(image, -getWidth() / 2, -getHeight() / 2, getWidth(),
        getHeight(), null);
    }

Zuerst rufe ich die super-Methode auf, damit das normale Panel gezeichnet wird (könnte ja noch mehr drauf sein, als nur mein Bild).
Anschließend wird das graphics-Object zu einem Graphics2D-Objekt gecastet, was in Swing ohne Typüberprüfung möglich ist (das g2d-Objekt hat ein paar mehr Methoden zum zeichnen).
Durch die Translation schiebe ich das Objekt in die mitte des Panels (da das Bild auch in die Mitte soll).
Jetzt rotiere ich das Objekt um den aktuellen Gradwert der ebenfalls in der Klasse gespeichert wird (und der später von außen geändert werden kann).
Dann wird das Bild gezeichnet, da das Graphics-Objekt allerdings in der Panelmitte sitzt müssen wir natürlich wieder die halbe Breite und höhe zur Seite gehen (jetzt allerdings mit rotation), das Bild wird dann mit der Breite und Höhe des Panels gezeichnet.

Soviel eigentlich zum statischen Teil, die regelmäßigen Updates regelt die Updater-Klasse, welche Runnable implementiert und somit in einem seperaten Thread gestartet werden kann.
Der Thread wird als deamon gestartet, dadurch wird er automatisch beendet, sollte sonst kein anderer Thread mehr laufen.
Java:
public void startRotate() {
    Thread t = new Thread(updater);
    t.setDaemon(true);
    t.start();
    }

Um den Thread sauber zu beenden verwende ich einen boolean-flag (die meisten Methoden um Threads abzuschießen sind deprecated, sollten also nicht verwendet werden. Ein boolean ist meines Wissens nach für solche kurzen Endlosschleifen die einfachste Lösung).
Java:
public void run() {
        running = true;
        while (isRunning()) {
        // Zeitintervall und Gradzahl geben das Tempo und die Bildrate
        // vor
        panel.setImageAngle(panel.getImageAngle() + 0.5F);
        panel.repaint();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
    }

Starte ich den Thread wird die run-Methode gestartet (parallel zum normalen Programm, startet man keinen seperaten Thread friert dir die GUI ein). Am Anfang wird running auf true gesetzt, anschließend läuft der Thread in einer Endlosschleife, die alle 100ms die Rotation um 0.5 erhöht und das panel zum Neuzeichnen auffordert.
Zum stoppen setze ich running auf false und die Gradzahl zurück.
Java:
public void stopRotate() {
    updater.stopRunning();
    imageAngle = 0f;
    repaint();
    }
Dadurch läuft der Thread höchstens noch einmal durch (er könnte ja z.B. gerade im sleep() stecken), dann beendet er die Schleife, kommt am Ende der run()-Methode an und terminiert.

Dass der Updater als statische innere Klasse implementiert ist war einfach aus Platzgründen, die Klasse kann man bequem als eigene Klasse auslagern, ebenso wie die main-Methode (die einfach nur ein Fenster zusammenschnippelt mit 2 einfachen Buttons über die sich das Panel steuern lässt).

Gruß
 

Mondlandung

Mitglied
Vielen Dank für eure Unterstützung,

hab jetzt die Lösung mit den blinkenden Felder, mehr hab ich auf die Schnelle nicht mehr hinbekommen (Abgabetermin!!!)

Aber nochmal vielen vielen Dank für die schnellen Antworten.

Gruß Mondlandung
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
Sogomn Einbinden eines Applets Java Basics - Anfänger-Themen 5
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
B VISA.jar in Projekt einbinden (Library) Java Basics - Anfänger-Themen 5
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
M OKHttpClient einbinden Java Basics - Anfänger-Themen 3
C externe jar einbinden in Eclipse-Projekt Java Basics - Anfänger-Themen 2
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
SpigBin Sound einbinden bei Funktionsaufruf Java Basics - Anfänger-Themen 4
M JAVA Programm in Website einbinden Java Basics - Anfänger-Themen 19
C External Jar einbinden bei Maven Java Basics - Anfänger-Themen 9
B tar.gz in Eclipse als Bibliothek einbinden Java Basics - Anfänger-Themen 3
C Einbinden von Komponenten mit Maven Java Basics - Anfänger-Themen 3
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
J Module richtig einbinden Java Basics - Anfänger-Themen 2
G eigene Bibliothek einbinden Java Basics - Anfänger-Themen 1
G Einbinden von Bildern in ausführbare Jar-Datei Java Basics - Anfänger-Themen 25
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
G persistence.xml in ausführbare jar einbinden Java Basics - Anfänger-Themen 11
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
J ShortCut erstellen aber wie die dll einbinden Java Basics - Anfänger-Themen 3
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Grafik in CSV einbinden Java Basics - Anfänger-Themen 2
CptK Erste Schritte Sound-Datei einbinden Java Basics - Anfänger-Themen 2
E HTML in Java einbinden oder JavaScript? Java Basics - Anfänger-Themen 5
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4
J If Anweisung in Schleife einbinden Java Basics - Anfänger-Themen 7
F PDF Datei in Java einbinden Java Basics - Anfänger-Themen 22
Hijo2006 Neue externe Klasse einbinden Java Basics - Anfänger-Themen 13
F Klassen Fremde Klasse in GUI einbinden ? Java Basics - Anfänger-Themen 3
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
S Klassen Externe Klasse in ein Projekt mit einbinden Java Basics - Anfänger-Themen 7
A JavaScript Object Notation einbinden mittels Maven Java Basics - Anfänger-Themen 7
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
S Konsole Lanterna in NetBeans einbinden Java Basics - Anfänger-Themen 5
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
M Externe .jar in Sublime einbinden Java Basics - Anfänger-Themen 5
O Eclipse Bibliothek standardmäßig einbinden Java Basics - Anfänger-Themen 5
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
J Klasse einbinden Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
S Variablen Rechenzeichen als Variablen in Rechnung einbinden Java Basics - Anfänger-Themen 4
I iCal und auf Homepage einbinden - Prinzip Java Basics - Anfänger-Themen 2
F JAR als bibliothek einbinden Java Basics - Anfänger-Themen 1
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
B jar richtig in libraryslibraries einbinden Java Basics - Anfänger-Themen 4
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
S Einbinden einer Klasse in die Gui Java Basics - Anfänger-Themen 4
I jar-Datei in HTML einbinden Java Basics - Anfänger-Themen 6
U ShareButton für LinkedIn einbinden Java Basics - Anfänger-Themen 2
M Bild einbinden Java Basics - Anfänger-Themen 7
T Java Main aus Subversion aufrufen / Hook einbinden Java Basics - Anfänger-Themen 2
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
G Erste Schritte Native DLL (NativeBass.dll) einbinden (eclipse) Java Basics - Anfänger-Themen 2
B ICO Library über Eclipse einbinden Java Basics - Anfänger-Themen 2
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
A Webseite in Programm einbinden Java Basics - Anfänger-Themen 5
K Wie jdom einbinden Java Basics - Anfänger-Themen 7
T Classpath Klassen einbinden netbeans Java Basics - Anfänger-Themen 5
D Schleifen einbinden Java Basics - Anfänger-Themen 4
E Bild OS-unabhängig einbinden mit URL Java Basics - Anfänger-Themen 4
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4
C Java in HTML einbinden Java Basics - Anfänger-Themen 2
R Klasse einbinden Java Basics - Anfänger-Themen 8
A JApplet: einbinden von weiteren Jars macht Probleme Java Basics - Anfänger-Themen 2
E apache-commons-net einbinden. Java Basics - Anfänger-Themen 18
S Bibliothek in Eclipse einbinden Java Basics - Anfänger-Themen 2
E Konsolenprogramm in Webseite einbinden Java Basics - Anfänger-Themen 4
N Klassen externe .class einbinden Java Basics - Anfänger-Themen 9
S Interface JNI Interface in Projekt einbinden? Java Basics - Anfänger-Themen 9
S UbuntuTerminal-Kommandos einbinden? Java Basics - Anfänger-Themen 5
S Classpath Externes Package einbinden (zip-Datei) Java Basics - Anfänger-Themen 9
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
J [JAVA] Bild in jar einbinden (Hintergrundbild)? Java Basics - Anfänger-Themen 8
P OOP JXDatePicker einbinden Java Basics - Anfänger-Themen 5
X Klassen Klassen in Projekte einbinden mit Eclipse Java Basics - Anfänger-Themen 6
E Browser in Java App einbinden? Java Basics - Anfänger-Themen 3
K Klassen externe JAR in Programm einbinden Java Basics - Anfänger-Themen 5
H jar datei einbinden Java Basics - Anfänger-Themen 17
L Klassen JAVA Klasse in JSP einbinden Java Basics - Anfänger-Themen 4
S Input/Output audio in Programm einbinden Java Basics - Anfänger-Themen 17
Y Bild mit poi in PPT einbinden - geht nicht Java Basics - Anfänger-Themen 4
D Libarie und Javadoc in Netbeans einbinden? Java Basics - Anfänger-Themen 6
F Text in Spiel einbinden Java Basics - Anfänger-Themen 17
J class Datei einbinden Java Basics - Anfänger-Themen 5
B fremde klasse in eclipse projekt einbinden Java Basics - Anfänger-Themen 8
F Dateien in jar einbinden Java Basics - Anfänger-Themen 14
C class Dateien einbinden Java Basics - Anfänger-Themen 22
C Package einbinden - "cannot access" Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
I HUMath Bibliothek einbinden?! Java Basics - Anfänger-Themen 4
C Website in *.java einbinden?? Java Basics - Anfänger-Themen 5
A wav Datei einbinden Java Basics - Anfänger-Themen 2
A OpenOffice Base in Java einbinden Java Basics - Anfänger-Themen 3
Weltall 7 Applet in HTML einbinden Java Basics - Anfänger-Themen 3
A Java in Html einbinden Java Basics - Anfänger-Themen 2
J In JSP Java-Klassen einbinden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben