📄 jvisualreceiver.java
字号:
package local.media;
import javax.media.*;
import javax.media.format.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.border.Border;
/** JVisualReceiver is a JMF-based graphical media receiver.
*/
public class JVisualReceiver extends Frame implements JMediaReceiverListener
{
JMediaReceiver receiver;
// GUI attributes
Panel panel = new Panel();
Image icon=Toolkit.getDefaultToolkit().getImage("media/media/icon.gif");
Image image=Toolkit.getDefaultToolkit().getImage("media/media/logo.gif");
Component visualComp=null, controlComp=null;
/** Constructs a VisualReceiver */
public JVisualReceiver(String media_type, int port)
{
receiver=new JMediaReceiver(media_type,port,this);
try
{ jbInit();
}
catch(Exception e) { e.printStackTrace(); }
}
public String start()
{
return receiver.start();
}
public String stop()
{
return receiver.stop();
}
private void jbInit() throws Exception
{
this.setTitle("Zoolu Player");
this.setIconImage(icon);
this.addWindowListener(new java.awt.event.WindowAdapter()
{ public void windowClosing(WindowEvent e) { this_windowClosing(); }
});
visualComp=new ImagePanel(image);
panel.setLayout(new BorderLayout());
panel.add(visualComp,BorderLayout.CENTER);
this.add(panel);
this.setSize(new Dimension(150, 150));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height > screenSize.height)
frameSize.height = screenSize.height;
if (frameSize.width > screenSize.width)
frameSize.width = screenSize.width;
this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
this.setVisible(true);
}
public synchronized void controllerUpdate(ControllerEvent event)
{ //System.out.println("DEBUG: controllerUpdate()");
if (event instanceof RealizeCompleteEvent || event instanceof FormatChangeEvent)
{ if (event instanceof RealizeCompleteEvent) System.out.println("RealizeComplete event");
if (event instanceof FormatChangeEvent) System.out.println("FormatChange event");
if ((visualComp = receiver.getVisualComponent()) != null) panel.add("Center", visualComp);
if ((controlComp = receiver.getControlPanelComponent()) != null) panel.add("South", controlComp);
this.setVisible(true);
return;
}
else
{ //System.out.println("Event: "+event.toString()+": Do nothing");
}
}
// ******************************* MAIN *******************************
public static void main(String[] args)
{
if (args.length>=2)
try
{ int port=Integer.parseInt(args[1]);
JVisualReceiver tv = new JVisualReceiver(args[0],port);
tv.start();
return;
}
catch (Exception e) { System.out.println("Error creating the receiver"); }
System.out.println("usage:\n java JVisualReceiver audio|video <local_port>");
}
void this_windowClosing()
{ if (receiver!=null) receiver.stop();
System.exit(0);
}
}
// ********************************************************************
// ************************* class ImagePanel *************************
// ********************************************************************
class ImagePanel extends JPanel
{ Image image;
public ImagePanel(Image image) { this.image = image; }
public void paintComponent(Graphics g)
{ super.paintComponent(g); //paint background
int x=this.getWidth();
int y=this.getHeight();
g.drawImage(image,0,0,x,y,this); //draw the image scaled
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -