Components überlagern

Status
Nicht offen für weitere Antworten.

peez

Bekanntes Mitglied
Ich schreibe gerade ein Programm, in dem mit JMF ein Video abgespielt wird. Darüber soll ein BufferedImage mit einem Text überlagert werden.
Wie könnte ich das hinbekommen?

Wenn ich jetzt einfach dem Frame, wo der Component mit dem Video drin ist, noch einen Component hinzufüge, in dem das BufferedImage gezeichnet wird (welches abgesehen von der Schrift transparent ist), wird der Hintergrund des neues Components in füllend weiß statt transparent dargestellt und das Video dahinter komplett überlagert.

Geht das so wie ich es vor habe?
 

Landei

Top Contributor
Yo, ist ganz einfach: Du leitest von JPanel ab, übergibst dem das Bild im Constructor, überschreibst die paintComponent() Methode, und zeichnet dort das Bild. Wenn du diesem Panel etwas hinzufügst, wird das über das Bild gemalt.

Es gibt auch eine SwingX-Komponente, die das von sich aus kann, siehe http://swinglabs.org/downloads.jsp
 

peez

Bekanntes Mitglied
Achso ich sollte vielleicht sagen, dass es in AWT oder zur Not in SWT passieren muss. Das Videobild ist ein embedded AWT Frame in eine SWT GUI.
 

peez

Bekanntes Mitglied
Niemand eine Idee?


So (vereinfacht) wird die GUI aufgebaut

Code:
Composite playerComposite = new Composite(m_shell, SWT.EMBEDDED);
mediaPlayer = Manager.createRealizedPlayer( url );
videoFrame = SWT_AWT.new_Frame( playerComposite );
videoComponent = m_mediaPlayer.getVisualComponent();
videoFrame.add( m_videoComponent );


Jetzt muss ich entweder ein SWT Composite über playerComposite legen, oder einen Component über videoComponent. Ist es überhaupt möglich, ein Component oder Composite transparent zu machen?
 
G

Gast2

Gast
hier vielleicht hilft es dir

Code:
package test;

import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class TestFrame extends Frame {

	public TestFrame() {
		super("Transparent");
		setSize(300, 300);
		BufferedImage image;
		try {
			image = ImageIO.read(new File("lib/bild.jpg"));
			add(new ImagePanel(image, true));
		} catch (IOException e) {
			e.printStackTrace();

		}
		
		setVisible(true);
	}

	public class ImagePanel extends Panel {
		private BufferedImage image;
		private boolean transparent;

		public ImagePanel(BufferedImage bufferedImage) {
			this(bufferedImage, true);
		}

		public ImagePanel(BufferedImage bufferedImage, boolean transparent) {
			this.transparent = transparent;
			image = bufferedImage;
		}

		public void paint(Graphics g) {
			super.paint(g);
			Graphics2D graphics2D = (Graphics2D) g;
			Composite old = graphics2D.getComposite();
			if (transparent) {
				graphics2D.setComposite(AlphaComposite.getInstance(
						AlphaComposite.SRC_OVER, 0.4f));
			}
			graphics2D.drawImage(image, 0, 0, getSize().width,
					getSize().height, null);
			if (transparent) {
				graphics2D.setComposite(old);
			}

		}
	}

	public static void main(String[] args) {
		new TestFrame();
	}

}
 

peez

Bekanntes Mitglied
Hmm ja das glaube ich so langsam auch ;-)
Die Lösung von SirWayne funktioniert leider nur innerhalb eines Components und nicht für zwei übereinander liegende.

Bin schon am überlegen, das anders zu machen also z.B. den PlayerComponent ohne getVisualComponent() aufzubauen und dann bei jedem Frame das entsprechende Bild im Voraus reinzeichnen... Da bin ich aber ähnlich ratlos wie hier. Im Netz gibts viele ziemlich aufwändige Beispiele mit Processor, Codecs etc.
Wüsste da jemand ein schnelles Tutorial o.ä.?
 

Zed

Bekanntes Mitglied
Wie wäre es mit einem Text auf eine GlassPane die über dem Vid liegt?
 

peez

Bekanntes Mitglied
GlassPane wäre wieder Swing. Und da meine GUI SWT ist, kann ich leider nur SWT oder AWT Komponenten benutzen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
F JavaFX JavaFX Builden: JavaFX Runtime components are missing AWT, Swing, JavaFX & SWT 0
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
X Alle Components eines JPanels Enablen AWT, Swing, JavaFX & SWT 7
G Components erscheinen erst bei Änderung des Frames AWT, Swing, JavaFX & SWT 3
A Swing Liste von komplexen Components AWT, Swing, JavaFX & SWT 2
xehpuk Swing Erst Components, dann Container zeichnen AWT, Swing, JavaFX & SWT 2
I LayoutManager CardLayout mit anonymen Components AWT, Swing, JavaFX & SWT 4
J remove() components bei event von JComboBox AWT, Swing, JavaFX & SWT 2
M Special design of Swing components AWT, Swing, JavaFX & SWT 14
hdi dynamische Iteration über Components AWT, Swing, JavaFX & SWT 3
V components nordwest alignen AWT, Swing, JavaFX & SWT 4
B HTML in Swing Components (JLabel) AWT, Swing, JavaFX & SWT 7
S 2 components & 1 button AWT, Swing, JavaFX & SWT 4
hdi Fenster mit variablen Components AWT, Swing, JavaFX & SWT 3
M icons für die java.swing components wie jbutton etc AWT, Swing, JavaFX & SWT 5
K Components auf Codeebene vor reverse engineering schützen? AWT, Swing, JavaFX & SWT 16
K Layout - Components richtig setzen AWT, Swing, JavaFX & SWT 9
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
G Components form AWT, Swing, JavaFX & SWT 3
P Components updaten AWT, Swing, JavaFX & SWT 2
masta // thomas GridBagLayout - Zwischenraum zw. Components AWT, Swing, JavaFX & SWT 7
G components unbeweglich machen AWT, Swing, JavaFX & SWT 3
conan2 getFontMetrics() außerhalb des Components AWT, Swing, JavaFX & SWT 7
F Components aneinander AWT, Swing, JavaFX & SWT 2
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
V Zugriff auf Components aus einem ActionListener AWT, Swing, JavaFX & SWT 3
W JTable und mehrere Components in einer Zelle AWT, Swing, JavaFX & SWT 4
meez Striche rund um Components AWT, Swing, JavaFX & SWT 6
A Components in einer ArrayList aus anderer Klasse speichern AWT, Swing, JavaFX & SWT 8
K MouseEvents vor den Components abfangen? AWT, Swing, JavaFX & SWT 4
H JFreeChart Charts überlagern AWT, Swing, JavaFX & SWT 2
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
G JPanel überlagern AWT, Swing, JavaFX & SWT 11
ToNyXXL Doppelbufferung: Bilder überlagern! AWT, Swing, JavaFX & SWT 32
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
J JPanels, die sich überlagern AWT, Swing, JavaFX & SWT 5
S JToolTip -> createToolTip() überlagern AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben