【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“RadioButton2D.java”一文,供大家参考学习!
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
public class RadioButton2D extends Component2D implements MouseListener
{
// 和按钮一起显示的标签
protected Label2D label;
// 这个按钮所从属的组
protected RadioButtonGroup rbGroup;
// 跟踪按钮状态的常量
public static final int BUTTON_OFF = 0;
public static final int BUTTON_ON = 1;
// 用给定的标签、图像、按钮组和位置创建一个RadioButton2D
public RadioButton2D(Label2D lbl, ImageGroup grp, RadioButtonGroup rbg, Vector2D p)
{
super();
label = lbl;
group = grp;
rbGroup = rbg;
if(rbGroup != null)
{
rbGroup.add(this);
}
setPos(p);
updateBounds();
update();
setSelected(false);
}
// 用给定的图像、按钮组和位置创建一个新的RadioButton2D
public RadioButton2D(ImageGroup grp, RadioButtonGroup rbg, Vector2D p)
{
this(null, grp, rbg, p);
}
// 用给定的标签、图像和按钮组创建一个新的RadioButton2D
public RadioButton2D(Label2D lbl, ImageGroup grp, RadioButtonGroup rbg)
{
this(lbl, grp, rbg, Vector2D.ZERO_VECTOR);
}
// 用给定的图像组创建一个新的RadioButton2D
public RadioButton2D(ImageGroup grp)
{
this(null, grp, null, Vector2D.ZERO_VECTOR);
}
// 返回按钮是否被选中
public boolean isSelected()
{
return (state == BUTTON_ON);
}
// 设置按钮的选中状态
public void setSelected(boolean selected)
{
state = (selected) ? BUTTON_ON : BUTTON_OFF;
}
// 如果有的话返回按钮的文本描述
public String getText()
{
if(label != null)
{
return label.getText();
}
return "";
}
// 设置按钮和它的标签的可用状态
public void setEnabled(boolean e)
{
super.setEnabled(e);
if(label != null)
{
label.setEnabled(e);
}
}
// 变换按钮的状态
public void mousePressed(MouseEvent e)
{
if(!isEnabled() || !isVisible()) return;
// 如果没有按钮组则表明按钮独立行动
if(rbGroup == null)
{
if(bounds.contains(e.getPoint()))
{
setSelected(!isSelected());
}
}
// 否则,更新整个按钮组
else
{
if(bounds.contains(e.getPoint()))
{
setSelected(true);
rbGroup.updateGroup(this);
}
}
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
// 用当前的变换绘制按钮
public void paint(Graphics2D g2d)
{
// 只在组件可见时绘制
if(isVisible())
{
g2d.drawImage(((ButtonImageGroup) group).getFrame(state), xform, AnimationStrip.observer);
// 如果标签有效则绘制标签
if(label != null)
{
label.paint(g2d);
}
}
}
// 在给定的位置绘制按钮
public void paint(Graphics2D g2d, double dx, double dy)
{
// 只绘制可见组件
if(isVisible())
{
g2d.drawImage(((ButtonImageGroup) group).getFrame(state),
AffineTransform.getTranslateInstance(pos.getX() + dx,pos.getY() + dy),
AnimationStrip.observer
);
// 如果标签有效则绘制标签
if(label != null)
{
label.paint(g2d, dx, dx);
}
}
}
// 返回描述这个按钮的文本
public String toString()
{
if(label != null)
{
return super.toString() + " " + label.toString();
}
return super.toString();
}
} // RadioButton2D