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 + -
显示快捷键?