⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 capturedevicebrowser.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
字号:
package net.sf.fmj.ui.application;import java.awt.Container;import java.awt.Dimension;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.HashMap;import java.util.Map;import java.util.logging.Level;import java.util.logging.Logger;import javax.media.CaptureDeviceInfo;import javax.media.CaptureDeviceManager;import javax.media.MediaLocator;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JPanel;import net.sf.fmj.media.cdp.GlobalCaptureDevicePlugger;import net.sf.fmj.utility.LoggerSingleton;/** *  * @author Ken Larson * */public class CaptureDeviceBrowser extends JPanel{	private static final Logger logger = LoggerSingleton.logger;	private final JComboBox deviceComboBox;	private final JButton okButton;	private final JButton cancelButton;		private boolean okClicked = false;		public CaptureDeviceBrowser()	{		setLayout(new GridBagLayout());				deviceComboBox = new JComboBox();		deviceComboBox.setEditable(false);//		deviceComboBox.addItemListener(new ItemListener(){////			public void itemStateChanged(ItemEvent e)//			{//				if (e.getStateChange() == ItemEvent.SELECTED)//				{//					logger.fine("itemStateChanged: " + e.getItem());//					if (e.getItem() != null)//						okButton.setEnabled(true);//				}//				//			}//			//		});				GridBagConstraints c1 = new GridBagConstraints();		c1.fill = GridBagConstraints.HORIZONTAL;		c1.weightx = 1.0;		c1.insets = new Insets(0, 2, 0, 2);		this.add(deviceComboBox, c1);				okButton = new JButton("OK");		okButton.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e)			{				okClicked = true;				closeDialog();			}					});		GridBagConstraints c2 = new GridBagConstraints();		c2.insets = new Insets(0, 2, 0, 2);		add(okButton, c2);				cancelButton = new JButton("Cancel");		cancelButton.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e)			{	closeDialog();			}					});		add(cancelButton, c2);		populate();				okButton.setEnabled(!deviceComboBoxMap.isEmpty());				this.setPreferredSize(new Dimension(300, 80));					}		private void closeDialog()	{		getParent().getParent().getParent().getParent().setVisible(false);		((JDialog) getParent().getParent().getParent().getParent()).dispose();	}		private Map/*<Integer, MediaLocator>*/ deviceComboBoxMap = new HashMap/*<Integer, MediaLocator>*/();		private void populate()	{				GlobalCaptureDevicePlugger.addCaptureDevices();	// TODO: this needs to be done globally somewhere.						final java.util.Vector vectorDevices = CaptureDeviceManager.getDeviceList(null);		if (vectorDevices == null || vectorDevices.size() == 0)		{			return;		}//		deviceComboBox.addItem("[None]");//		deviceComboBoxMap.put(0, null);				for ( int i = 0;  i < vectorDevices.size();  i++ ) 		{			CaptureDeviceInfo infoCaptureDevice = (CaptureDeviceInfo) vectorDevices.get(i);			logger.fine("CaptureDeviceInfo: ");			logger.fine(infoCaptureDevice.getName());			logger.fine("" + infoCaptureDevice.getLocator());			logger.fine("" + infoCaptureDevice.getFormats()[0]);			deviceComboBox.addItem(infoCaptureDevice.getName());			deviceComboBoxMap.put(new Integer(i), infoCaptureDevice.getLocator());					}	}		public MediaLocator getSelectedMediaLocator()	{		int index = deviceComboBox.getSelectedIndex();		if (index < 0)			return null;		return (MediaLocator) deviceComboBoxMap.get(new Integer(index));	}		public static MediaLocator run(Frame parent)	{		// TODO: parent of dialog?		JDialog frame = new JDialog();		frame.setTitle("Select Capture Device");		frame.setModal(true);		//frame.setSize(new Dimension(640, 480));		//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);				Container contentPane = frame.getContentPane();		CaptureDeviceBrowser panel = new CaptureDeviceBrowser();		contentPane.add(panel);		frame.pack();		if (parent != null)			frame.setLocationRelativeTo(parent);		frame.setVisible(true);		MediaLocator result = panel.okClicked ? panel.getSelectedMediaLocator() : null;		return result;	}		public static void main(String[] args) {		try {			System.setProperty("com.apple.mrj.application.apple.menu.about.name", "CaptureDeviceBrowser");						logger.fine("" + CaptureDeviceBrowser.run(null));			System.exit(0);	// TODO: why does it not close by itself?		}		catch (Throwable t) {			logger.log(Level.WARNING, "" + t, t);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -