panel2d.java
来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 89 行
JAVA
89 行
package magic.awtex;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import magic.graphics.*;
// 定义一个可以容纳其他组件的面板
public class Panel2D
extends Container2D
{
// 背景图片
protected Image background;
// 用指定的背景图片和位置创建一个新的Panel2D对象
protected Panel2D(Image bgImage, Vector2D p)
{
super(p);
background = bgImage;
}
// 在面板上指定的位置添加组件
// 注意所传入的x,y值是相对于面板原点的 (左上角)
public void add(Component2D c, double x, double y)
{
c.setX(getX() + x);
c.setY(getY() + y);
// 确保组件在面板边界之内
if (c.getX() + c.getBounds().getWidth() > getX() + getBounds().getWidth()) {
c.setX(getX() + getBounds().getWidth() - c.getBounds().getWidth());
}
if (c.getY() + c.getBounds().getHeight() > getY() + getBounds().getHeight()) {
c.setY(getY() + getBounds().getHeight() - c.getBounds().getHeight());
}
c.update();
c.updateBounds();
components.add(c);
}
// 绘制面板和它的组件
public void paint(Graphics2D g2d)
{
// 绘制背景
if (background != null) {
g2d.drawImage(background, (int) getX(), (int) getY(),
AnimationStrip.observer);
}
// 绘制面板上的组件
for (e = components.elements(); e.hasMoreElements(); ) {
( (Component2D) e.nextElement()).paint(g2d);
}
}
// 根据指定的偏移值绘制面板和它的组件
public void paint(Graphics2D g2d, double dx, double dy)
{
if (background != null) {
g2d.drawImage(background, (int) (getX() + dx), (int) (getY() + dy),
AnimationStrip.observer);
}
for (e = components.elements(); e.hasMoreElements(); ) {
( (Component2D) e.nextElement()).paint(g2d, dx, dy);
}
}
// 更新面板的边界--如果面板没有图片,则不会尝试去计算面板的边界
// will be made to calculate the panel's bounds
public void updateBounds()
{
if (background != null) {
frameWidth = background.getWidth(AnimationStrip.observer);
frameHeight = background.getHeight(AnimationStrip.observer);
}
else {
frameWidth = Integer.MAX_VALUE;
frameHeight = Integer.MAX_VALUE;
}
bounds.setRect(pos.getX(), pos.getY(), frameWidth, frameHeight);
}
} // Panel2D
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?