testclass4.java
来自「java网络高级编程的配套源码,java网络高级编程为清华出版社出版.」· Java 代码 · 共 91 行
JAVA
91 行
/*源程序清单10-4*/
import java.awt.*;
import java.beans.*;
public class TestClass4 extends Panel
{
private PropertyChangeSupport changes=new PropertyChangeSupport(this);
private VetoableChangeSupport vetos=new VetoableChangeSupport(this);
//forecolor为关联属性
private Color bkColor=new Color(192,192,192);
//radius为限制属性
private int radius=100;
public TestClass4()
{ }
public void paint(Graphics g)
{
g.drawArc(100-radius,100-radius,100+radius,100+radius,0,360);
}
public void update(Graphics g)
{
paint(g);
}
public Dimension getPreferredSize()
{
return new Dimension(300,300);
}
public Color getBkColor()
{
returm bkColor;
}
public void setBkColor(Color newBkColor)
{
Color oldBkColor=bkColor;
bkColor=newBkColor;
changes.firePropertyChange("bkColor",oldBkColor,newBkColor);
repaint();
}
public int getRadius()
{
return radius;
}
//抛出一个PropertyVetoException异常的限制属性设置器方法
public void setRadius(int newRadius) throws PropertyVetoException
{
int oldRadius=radius;
//将属性修改通知给否决监听器对象,不捕获异常而是发送异常给调用者
vetos.fireVetoableChange("radius",
new Integer(oldRadius),
new Integer(newRadius));
radius=newRadius;
//修改限制属性并发送修改事件给监听器
changes.forePropertyChange("radius",
new Integer(oldRadius),
new Integer(newRadius));
repaint();
}
//以下方法为注册监听器
public void addPropertyChangeListener(PropertyChangeListener l)
{
chages.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l)
{
change.removePropertyChangeListener(l);
}
//以下方法添加和删除否决监听器对象
public void addVetoableChangeListener(VetoableChangeListener l)
{
vetos.addVetoableChangeListener(l);
}
public void removeVetoableChangeListener(VetoableChangeListener l)
{
vetos.removeVetoableChangeListener(l);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?