abstractcontrolpanel.java

来自「FMJ(freedom media for java)是java视频开发的新选择」· Java 代码 · 共 192 行

JAVA
192
字号
package net.sf.fmj.ejmf.toolkit.gui.controlpanel;import java.awt.Component;import java.awt.FlowLayout;import javax.media.Player;import javax.swing.BorderFactory;import javax.swing.JPanel;import net.sf.fmj.ejmf.toolkit.gui.controls.AbstractListenerControl;import net.sf.fmj.ejmf.toolkit.gui.controls.Skin;/*** Root class form which custom Control Panels should* extends. AbstractControlPanel provides layout* a collection Controls provided by AbstractControls* reference.* <p>* Subclasses must supply definitions of the following methods:* <ul>* <li>void addComponents(int flags);* <li>AbstractControls createControls(Player player);* </ul>*/public abstract class AbstractControlPanel extends JPanel {    /**     *  Value for start button control.     */    public final static int USE_START_CONTROL = 	1;    /**     *  Value for stop button control.     */    public final static int USE_STOP_CONTROL = 	2;    /**     * Value for reverse button control.     */    public final static int USE_REVERSE_CONTROL = 	4;    /**     * Value for pause button control.     */    public final static int USE_PAUSE_CONTROL = 	8;    /**     * Value for volume control.     */    public final static int USE_GAIN_CONTROL = 	16;    /**     * Value for fast forward control     */    public final static int USE_FF_CONTROL =		32;    /**     * Value for progress bar control.     */    public final static int USE_PROGRESS_CONTROL = 	64;    /**      * Value for volume meter/mute control      */    public final static int USE_GAINMETER_CONTROL = 128;    private AbstractControls	  controls;	    private Player                player;    protected final Skin			  skin;	/** 	* Create a Control panel with those Controls identified         * by <code>flags</code> argument associated with         * <code>player</code>.	* @param player Playera with which control panel is associated.	* @param flags OR'd value of USE values that determine which	* control buttons are displayed.  	*/    protected AbstractControlPanel(Skin skin, Player player, int flags) {    this.skin = skin;	setControlPanelLayout();    	setControlPanelBorder();	this.player = player;	controls = createControls(player);	addComponents(flags);    }	/**		* Create a Control Panel with complete suite of Controls		* @param player Playera with which control panel is associated.	*/    protected AbstractControlPanel(Skin skin, Player player) {	this(skin, player, 0xffffffff);    }	/**	* Set border of control panel. Subclasses should override	* this method if they prefer a border different than	* EtchedBorder.	*/    protected void setControlPanelBorder() {	setBorder(BorderFactory.createEtchedBorder());    }	/** 	* Set layout for control panel.        * Subclasses override this method to  	* change layout.        * <p>	* Default layout is FlowLayout.  	*/    protected void setControlPanelLayout() {	FlowLayout flow = new FlowLayout();	flow.setHgap(5);	setLayout(flow);    }	/**	* Add appropriate Components to Control Panel.	* @param flags Is the bit-wise OR of some number		* of Control identifiers, e.g. USE_START_CONTROL.	* OR'd value of USE values that determine which	* control buttons are displayed.	*/    protected abstract void addComponents(int flags);	/**	* Create the Controls to be displayed in the Control Panel.		* @param player Playera with which control panel is associated.	*/    protected abstract AbstractControls createControls(Player player);	/**	* Remove all control components from the Control panel	* container.	*/    protected void removeControlComponents() {	int count = getComponentCount();	for (int i = 0; i <  count; i++) {	    remove(i);	}    }	/**	* Remove the control component identified by <code>c</code> and	* replace it with <code>withComponent</code>.	* <p>	* If default layout is changed by a subclass, this method may need to	* be overridden.	* @param c	Existing component	* @param withComponent New component to be installed in control panel.	*/	    protected void replaceControlComponent(Component c, Component withComponent)    {	int count = getComponentCount();	for (int i = 0; i <  count; i++) {	    if (c == getComponent(i)) {		replaceControlComponent(withComponent, i);		break;            } 	}    }	/**	* Remove the control component at location <code>atIndex</code>	* with the component named by <code>withComponent</code>.	* <p>	* If default layout is changed by a subclass, this method may need to	* be overridden.	* @param withComponent New component to be installed in control panel.	* @param atIndex Position of component to replace.	*/    protected void replaceControlComponent(				Component withComponent,				int atIndex) {	remove(atIndex);	add(withComponent, atIndex);    }	/** 	* Return Control with given name.	*/    public AbstractListenerControl getControl(String name) {	return controls.getControl(name);    }	/**	*  Return AbstractControls managed by this AbstractControlPanel.		*/	    protected AbstractControls getControls() {	return controls;    }}

⌨️ 快捷键说明

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