CAD系统的储存和恢复状态 : Java组件 « 开发相关类 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 开发相关类 » Java组件屏幕截图 
CAD系统的储存和恢复状态
CAD系统的储存和恢复状态
 

// : c12:CADState.java
// Saving and restoring the state of a pretend CAD system.
// {Clean: CADState.out}
//package c12;
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

abstract class Shape implements Serializable {
  public static final int RED = 1, BLUE = 2, GREEN = 3;

  private int xPos, yPos, dimension;

  private static Random r = new Random();

  private static int counter = 0;

  public abstract void setColor(int newColor);

  public abstract int getColor();

  public Shape(int xVal, int yVal, int dim) {
    xPos = xVal;
    yPos = yVal;
    dimension = dim;
  }

  public String toString() {
    return getClass() "color[" + getColor() "] xPos[" + xPos
        "] yPos[" + yPos + "] dim[" + dimension + "]\n";
  }

  public static Shape randomFactory() {
    int xVal = r.nextInt(100);
    int yVal = r.nextInt(100);
    int dim = r.nextInt(100);
    switch (counter++ % 3) {
    default:
    case 0:
      return new Circle(xVal, yVal, dim);
    case 1:
      return new Square(xVal, yVal, dim);
    case 2:
      return new Line(xVal, yVal, dim);
    }
  }
}

class Circle extends Shape {
  private static int color = RED;

  public Circle(int xVal, int yVal, int dim) {
    super(xVal, yVal, dim);
  }

  public void setColor(int newColor) {
    color = newColor;
  }

  public int getColor() {
    return color;
  }
}

class Square extends Shape {
  private static int color;

  public Square(int xVal, int yVal, int dim) {
    super(xVal, yVal, dim);
    color = RED;
  }

  public void setColor(int newColor) {
    color = newColor;
  }

  public int getColor() {
    return color;
  }
}

class Line extends Shape {
  private static int color = RED;

  public static void serializeStaticState(ObjectOutputStream os)
      throws IOException {
    os.writeInt(color);
  }

  public static void deserializeStaticState(ObjectInputStream os)
      throws IOException {
    color = os.readInt();
  }

  public Line(int xVal, int yVal, int dim) {
    super(xVal, yVal, dim);
  }

  public void setColor(int newColor) {
    color = newColor;
  }

  public int getColor() {
    return color;
  }
}

public class CADState {
  public static void main(String[] argsthrows Exception {
    List shapeTypes, shapes;
    if (args.length == 0) {
      shapeTypes = new ArrayList();
      shapes = new ArrayList();
      // Add references to the class objects:
      shapeTypes.add(Circle.class);
      shapeTypes.add(Square.class);
      shapeTypes.add(Line.class);
      // Make some shapes:
      for (int i = 0; i < 10; i++)
        shapes.add(Shape.randomFactory());
      // Set all the static colors to GREEN:
      for (int i = 0; i < 10; i++)
        ((Shapeshapes.get(i)).setColor(Shape.GREEN);
      // Save the state vector:
      ObjectOutputStream out = new ObjectOutputStream(
          new FileOutputStream("CADState.out"));
      out.writeObject(shapeTypes);
      Line.serializeStaticState(out);
      out.writeObject(shapes);
    else // There's a command-line argument
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(
          args[0]));
      // Read in the same order they were written:
      shapeTypes = (Listin.readObject();
      Line.deserializeStaticState(in);
      shapes = (Listin.readObject();
    }
    // Display the shapes:
    System.out.println(shapes);
  }
///:~


           
         
  
Related examples in the same category
1. Java组件: BeanContextSupportJava组件: BeanContextSupport
2. Java组件:测试程序,增加了100组件到背景Java组件:测试程序,增加了100组件到背景
3. Java组件:如何使用instantiateChild ( )方便的方法创建一个组件Java组件:如何使用instantiateChild ( )方便的方法创建一个组件
4. Java组件:说明交付BeanContextMembershipEventJava组件:说明交付BeanContextMembershipEvent
5. Java组件:创建的所有对象的测试服务能力Java组件:创建的所有对象的测试服务能力
6. 组件集装箱组件集装箱
7. 属性表属性表
8. 性能测试
9. 反思一个组件反思一个组件
10. 在JFileChooser对话框倾听改变到所选文件
11. 获取选定的文件清单
12. 在JFileChooser对话框倾听改变到当前目录
13. 在标题JFileChooser对话框显示当前目录中
14. 在标题JFileChooser对话框中设置配件组件
15. 转换组件为XML
16. 聆听组件属性变更事件
17. 列表组件的属性名称
18. 防止组件的属性列化到XML
19. 创建一个实例组件
20. 转换XML持久到组件
21. 确定组件的属性类型
22. 聆听了限制属性变化
23. 组件属性
24. 实现一个有界属性
25. Implementing a Constrained Property: fires a PropertyChangeEvent whenever its value is about to be changed.
26. 一个组件实例
27. 列出自建的属性名称
28. 获得和设置一个组件的属性
29. Get and set the value of a property in a bean using Expression and Statement
30. 获取和设置的对象类型属性
31. 获得和设置一个原始类型属性
32. 获得和建立了一个数组类型的属性
33. Serializing a Bean to XML: XMLEncoder only persists the value of public properties.
34. 防止XML序列化一个组件
35. 防止一个组件属性被序列化到XML
36. 序列化不可改变组件属性为XML
37. Listening for a Property Change Event: A property change event is fired when a bound property is changed.
38. Listening for a Vetoable Property Change Event
39. 读取组件的属性值
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.