Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: QTCanvas



> does that really work?
Sure, it works. At least the code below does.

Of course I don't know what Valar's final objective is and what kind of
functionality is expected from his software. This is just an example.
It may very well apear, your approach is more suitable for his needs...

Regards,
Simeon


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import quicktime.*;
import quicktime.io.*;
import quicktime.app.QTFactory;
import quicktime.app.display.QTCanvas;
import quicktime.app.players.MoviePresenter;
import quicktime.std.movies.Movie;

public class LayersTest extends JFrame {

public LayersTest () {
JLayeredPane layers = new JLayeredPane();
Panel p = new Panel();
JTextField tf = new JTextField();
QTCanvas qtc = new QTCanvas (QTCanvas.kFreeResize, 0.5F, 0.5F);

p.setBounds(150, 130, 100, 25);
p.setLayout(new BorderLayout());

enableEvents(AWTEvent.WINDOW_EVENT_MASK);
getContentPane().setLayout(new BorderLayout());

try {
QTSession.open();
QTFile mf = new QTFile
(QTFactory.findAbsolutePath("someMovie.mov" ));
OpenMovieFile movieFile = OpenMovieFile.asRead(mf);
Movie m = Movie.fromFile(movieFile);
MoviePresenter mp = new MoviePresenter (m);
qtc.setClient(mp, true);

p.add(tf, BorderLayout.CENTER);
layers.add(qtc, new Integer(0));
layers.add(p, new Integer(1));
getContentPane().add(layers, BorderLayout.CENTER);
m.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}

protected void processWindowEvent (WindowEvent e) {
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING) {
try {
QTSession.close();
} catch (Exception ex) {
}
System.exit(0);
}
}

public static void main (String[] args) {
LayersTest lt = new LayersTest ();
lt.setSize(400, 300);
lt.setVisible(true);
}
}





> > Try using javax.swing.JLayeredPane. However you must take in mind, that
> > lightweight components want draw upon heavyweight component. QTCanvas is
> > heavyweight component, so if you want to add JTextFiled for
> example on top
> > of QTCanvas it want show up.
> >
> > The workaround is first to add the lightweight component to some
> heavyweight
> > container like java.awt.Panel and then add the Panel to JLayeredPane.
> > Something like this:
> >
> > QTCanvas qtc = .........;
> > JLayeredPane layers = new JLayeredPane ();
> > Panel p = new Panel ();
> > JTextField f = new JTextField ();
> >
> > p.add(f);
> > layers.add(qtc, new Integer (0));
> > layers.add(p, new Integer (1));




Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.