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

📄 component2d.java

📁 java learn PPT java learn PPT java learn PPT java learn PPT
💻 JAVA
字号:
package magic.awtex;

import java.awt.*;
import java.awt.geom.*;
import magic.graphics.*;

// 创建可视化组件的基类
public abstract class Component2D
    extends Object
{
  // 容纳组件外观的ImageGroup
  protected ImageGroup group;

  // 组件的大小
  protected int frameWidth;
  protected int frameHeight;

  // 组件的位置和边界,以及缓存的变换
  protected Vector2D pos;
  protected Rectangle2D bounds;
  protected AffineTransform xform;

  // 组件是否可视是否可用的标记
  protected boolean enabled;
  protected boolean visible;

  // 跟踪组件的内部状态
  protected int state;

  // 用默认的属性创建一个新的Component2D对象
  protected Component2D()
  {
    pos = new Vector2D.Double();
    xform = new AffineTransform();

    setEnabled(true);
    setVisible(true);

    bounds = new Rectangle2D.Double();
    frameWidth = 0;
    frameHeight = 0;

    state = 0;
  }

  // 使用传入的Graphics2D容器绘制组件
  public abstract void paint(Graphics2D g2d);

  // 在给定的偏移位置绘制组件
  public abstract void paint(Graphics2D g2d, double dx, double dy);

  // 更新组件内部的变换
  public void update()
  {
    xform.setToTranslation(pos.getX(), pos.getY());
  }

  // 更新组件的边界矩形
  public void updateBounds()
  {
    if (frameWidth <= 0 && group != null) {
      frameWidth = group.getFrameWidth();
    }
    if (frameHeight <= 0 && group != null) {
      frameHeight = group.getFrameHeight();
    }

    bounds.setRect(pos.getX(), pos.getY(), frameWidth, frameHeight);
  }

  // 返回一个描述组件的String
  public String toString()
  {
    // 输出类名合当前位置
    return getClass().getName() + ": " + pos.toString();
  }

  // 主要属性的访问方法

  public void setEnabled(boolean e)
  {
    enabled = e;
  }

  public final boolean isEnabled()
  {
    return enabled;
  }

  public final void setVisible(boolean v)
  {
    visible = v;
  }

  public final boolean isVisible()
  {
    return visible;
  }

  public final void setX(double px)
  {
    pos.setX(px);
  }

  public final void setY(double py)
  {
    pos.setY(py);
  }

  public final double getX()
  {
    return pos.getX();
  }

  public final double getY()
  {
    return pos.getY();
  }

  public final void setPos(int x, int y)
  {
    pos.setX(x);
    pos.setY(y);
  }

  public final void setPos(double x, double y)
  {
    pos.setX(x);
    pos.setY(y);
  }

  public final void setPos(Vector2D v)
  {
    pos.setX(v.getX());
    pos.setY(v.getY());
  }

  public final Vector2D getPos()
  {
    return pos;
  }

  public Rectangle2D getBounds()
  {
    return bounds;
  }

} // Component2D

⌨️ 快捷键说明

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