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

📄 capturedeviceframe.java

📁 简易聊天工具
💻 JAVA
字号:

import javax.media.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.io.IOException;
import javax.media.format.*;
import javax.swing.*;
import javax.swing.border.*;
public class CaptureDeviceFrame extends JFrame
{
	protected JLabel adLabel;
	protected JLabel afLabel;
	protected JLabel vdLabel;
	protected JLabel vfLabel;
	protected JComboBox adCbb;
	protected JComboBox afCbb;
	protected JComboBox vdCbb;
	protected JComboBox vfCbb;
	protected JButton okButton;
	protected JButton cancelButton;
	protected Vector devices = null; 
	protected Vector audioDevices = null;
	protected Vector videoDevices = null;
	protected CaptureDeviceInfo cdi = null;
	protected ClientFrame p = null;
	public CaptureDeviceFrame(ClientFrame parent)
	{
		p = parent;
		adLabel = new JLabel("音频设备:");
		afLabel = new JLabel("音频格式:");
		vdLabel = new JLabel("视频设备:");
		vfLabel = new JLabel("视频格式:");
		adCbb = new JComboBox();
		afCbb = new JComboBox();
		vdCbb = new JComboBox();
		vfCbb = new JComboBox();
		okButton = new JButton("确定");
		cancelButton = new JButton("取消");
		devices = CaptureDeviceManager.getDeviceList ( null );
		Format[] formats;
		if (devices != null && devices.size() > 0) 
		{
      		int deviceCount = devices.size();
      		audioDevices = new Vector();
      		videoDevices = new Vector();
      		for ( int i = 0;  i < deviceCount;  i++ ) 
      		{
        		cdi = (CaptureDeviceInfo) devices.elementAt ( i );
        		formats = cdi.getFormats();
        		for ( int j = 0;  j < formats.length; j++ ) 
        		{
          			if ( formats[j] instanceof AudioFormat ) 
          			{
            			audioDevices.addElement(cdi);
            			break;
          			}
          			else if (formats[j] instanceof VideoFormat ) 
          			{
            			videoDevices.addElement(cdi);
            			break;
          			}
        		}
      		}
      	}
      	// 将音频设备显示在下拉列表中
      	for (int i = 0; i < audioDevices.size(); i++) 
      	{
        	cdi = (CaptureDeviceInfo)audioDevices.elementAt(i);
        	if(cdi != null)	adCbb.insertItemAt(cdi, i);
      	}
      	if(adCbb.getItemCount() > 0)
      	{
      		adCbb.setSelectedIndex(0);
      		cdi = (CaptureDeviceInfo)audioDevices.elementAt(0);
      		formats = cdi.getFormats();
      		for ( int i = 0;  i < formats.length; i++ )
      		{
      			afCbb.addItem(formats[i]);
      		}
      	}
      	else 
      	{
      		String s = "没有音频设备";
      		adCbb.addItem(s);
      		adCbb.setSelectedIndex(0);	
      		afCbb.addItem(s);
      		afCbb.setSelectedIndex(0);
      		adCbb.setEnabled(false);
      		afCbb.setEnabled(false);
      		//okButton.setEnabled(false);
      	}
      	// 将视频设备显示在下拉列表中
      	for (int i = 0; i < videoDevices.size(); i++) 
      	{
        	cdi = (CaptureDeviceInfo)videoDevices.elementAt(i);
         	if(cdi != null) vdCbb.insertItemAt(cdi, i);
      	}
      	if(vdCbb.getItemCount() > 0)
      	{
      		vdCbb.setSelectedIndex(0);
      		cdi = (CaptureDeviceInfo)videoDevices.elementAt(0);
      		formats = cdi.getFormats();
      		for ( int i = 0;  i < formats.length; i++ )
      		{
      			vfCbb.addItem(formats[i]);
      		}
      	}
      	else
      	{
      		String s = "没有视频设备";
      		vdCbb.addItem(s);
      		vdCbb.setSelectedIndex(0);	
      		vfCbb.addItem(s);
      		vfCbb.setSelectedIndex(0);
      		vdCbb.setEnabled(false);
      		vfCbb.setEnabled(false);
      		//okButton.setEnabled(false);	
      	}
      	
      	adCbb.addItemListener(new ItemListener() 
      	{
      		public void itemStateChanged(ItemEvent e) 
      		{
        		choiceAD_itemStateChanged();
      		}
    	});
    	vdCbb.addItemListener(new ItemListener() 
      	{
      		public void itemStateChanged(ItemEvent e) 
      		{
        		choiceVD_itemStateChanged();
      		}
    	});	
		adLabel.setBounds(new Rectangle(20, 20, 60, 20));
		afLabel.setBounds(new Rectangle(20, 50, 60, 20));
		vdLabel.setBounds(new Rectangle(20, 80, 60, 20));
		vfLabel.setBounds(new Rectangle(20, 110, 60, 20));
		adCbb.setBounds(new Rectangle(90, 20, 200, 20));
		afCbb.setBounds(new Rectangle(90, 50, 200, 20));
		vdCbb.setBounds(new Rectangle(90, 80, 200, 20));
		vfCbb.setBounds(new Rectangle(90, 110, 200, 20));
		okButton.setBounds(new Rectangle(40, 150, 100, 20));
		okButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				ok_ActionPerformed();	
			}		
		});
		cancelButton.setBounds(new Rectangle(180, 150, 100, 20));
		cancelButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				cancel_ActionPerformed();	
			}		
		});
		Container cp = getContentPane();
		cp.setLayout(null);
		cp.add(adLabel, null);
		cp.add(afLabel, null);
		cp.add(vdLabel, null);
		cp.add(vfLabel, null);
		cp.add(adCbb, null);
		cp.add(afCbb, null);
		cp.add(vdCbb, null);
		cp.add(vfCbb, null);
		cp.add(okButton, null);
		cp.add(cancelButton, null);
		
		setTitle("Capture Device");
		setSize(310, 220);
		setResizable(false);
		setLocationRelativeTo(p);
		setVisible(true);	
	}
	private void choiceAD_itemStateChanged()
	{
		CaptureDeviceInfo cdi = (CaptureDeviceInfo)adCbb.getSelectedItem();
		if(cdi != null)
		{
			Format[] formats = cdi.getFormats();
			afCbb.removeAllItems();
      		for ( int i = 0;  i < formats.length; i++ )
      		{
      			afCbb.addItem(formats[i]);
      		}
      	}
	}
	private void choiceVD_itemStateChanged()
	{
		CaptureDeviceInfo cdi = (CaptureDeviceInfo)vdCbb.getSelectedItem();
		if(cdi != null)
		{
			Format[] formats = cdi.getFormats();
			vfCbb.removeAllItems();
      		for ( int i = 0;  i < formats.length; i++ )
      		{
      			vfCbb.addItem(formats[i]);
      		}
      	}
	}
	public AudioFormat getAudioFormat()
	{
		return (AudioFormat)afCbb.getSelectedItem();
	}
	public VideoFormat getVideoFormat()
	{
		return (VideoFormat)vfCbb.getSelectedItem();
	}
	public CaptureDeviceInfo getAudioDevice()
	{
		return (CaptureDeviceInfo)adCbb.getSelectedItem();
	}
	public CaptureDeviceInfo getVideoDevice()
	{
		return (CaptureDeviceInfo)vdCbb.getSelectedItem();
	}
	public void ok_ActionPerformed()
	{
		if(!adCbb.isEnabled())
		{
			JOptionPane.showMessageDialog(p, "没有音频设备", "系统消息", JOptionPane.INFORMATION_MESSAGE);
		}
		else if(!vdCbb.isEnabled())
		{
			JOptionPane.showMessageDialog(p, "没有视频设备", "系统消息", JOptionPane.INFORMATION_MESSAGE);
		}
		else
		{
			MultiSelectFrame msf = new MultiSelectFrame(this.p, this);
			this.setVisible(false);
		}
	}
	public void cancel_ActionPerformed()
	{
		this.setVisible(false);	
	}
}

⌨️ 快捷键说明

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