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

📄 buttongroup.java

📁 纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统
💻 JAVA
字号:
/* class ButtonGroup
 *
 * Copyright (C) 2001  R M Pitman
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

/*
 * Modified Jul 14, 2003 by Tadpole Computer, Inc.
 * Modifications Copyright 2003 by Tadpole Computer, Inc.
 *
 * Modifications are hereby licensed to all parties at no charge under
 * the same terms as the original.
 *
 * ButtonGroup modified to work with AbstractButton rather than JRadioButton.
 * (Note that this may mean recompiling classes which use the older
 * implementation.)
 */

package charvax.swing;

import java.util.Enumeration;
import java.util.Vector;

import charva.awt.Component;
import charva.awt.event.ItemEvent;
import charva.awt.event.ItemListener;

/**
 * This class is used to create a multiple-exclusion scope for a set of
 * buttons. Adding a set of buttons to a ButtonGroup object means that
 * turning any one of these buttons "on" turns off all other buttons in the
 * group.<p>
 * Initially, all buttons in the group are unselected. Once any button in 
 * the group is selected, one button is always selected in the group.<p>
 * Note that the ButtonGroup is a logical grouping, not a physical grouping.
 * To create a button panel, you should still create a JPanel and add the
 * JRadioButtons to it.
 */
public class ButtonGroup
    implements ItemListener
{
    /** Creates a new ButtonGroup
     */
    public ButtonGroup()
    {
	_buttons = new Vector();
    }

    /** Adds the specified button to the group.
     */
    public void add(AbstractButton button_)
    {
	_buttons.add(button_);
	button_.addItemListener(this);
	button_.setSelected(false);
    }

    /** Returns the number of buttons in the ButtonGroup.
     */
    public int getButtonCount()
    {
	return _buttons.size();
    }

    /** Returns an Enumeration of all the buttons in this group.
     */
    public Enumeration getElements()
    {
	return _buttons.elements();
    }

    /** Get the selected radiobutton. Returns null if no button is selected.
     */
    public AbstractButton getSelection()
    {
	for (Enumeration e = _buttons.elements(); e.hasMoreElements();) {

	    AbstractButton b = (AbstractButton) e.nextElement();
	    if (b.isSelected() == true)
		return b;
	}
	return null;	// no button was selected.
    }

    /** Returns the selected value for the specified button.
     */
    public boolean isSelected(AbstractButton button_)
    {
	return button_.isSelected();
    }

    /** Remove the specified button from the group.
     */
    public void remove(AbstractButton button_)
    {
	_buttons.remove(button_);
	button_.removeItemListener(this);
    }

    /** Sets the selected value for the specified button.
     * This method doesn't appear to make sense but it is present in
     * the Swing version of ButtonGroup.
     */
    public void setSelected(AbstractButton button_, boolean val_)
    {
	button_.setSelected(val_);
    }

    /** Implements the ItemListener interface. Listens for state
     * changes from all the buttons in the group.
     */
    public void itemStateChanged(ItemEvent e_)
    {
	Component source = (Component) e_.getSource();
	int statechange = e_.getStateChange();

	/* There should have been only one button in the selected
	 * state. All the other buttons should be in the deselected state.
	 */
	for (Enumeration e = _buttons.elements(); e.hasMoreElements(); ) {

	    AbstractButton b = (AbstractButton) e.nextElement();
	    if (source != b || statechange != ItemEvent.SELECTED) {
		if (b.isSelected()) {
		    b._selected = false;
		    b.setEnabled(true);
		}
	    }
	}
    }

    //====================================================================
    // INSTANCE VARIABLES

    private Vector _buttons;
}

⌨️ 快捷键说明

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