0

我们刚刚学会了如何创建自己的类,以及我们必须处理图形的这个特殊任务。我们必须画一支蜡笔,然后创建一个测试程序,其中有 5 支蜡笔并排排列(所以我们只需更改每个蜡笔的颜色和 x、y)。我知道如何改变颜色和 x,y 坐标,但我的问题是......

我如何“打印”每支蜡笔?是的,它是一个小程序,是的,我知道我需要一个 .html 文件。但是,当我运行 .html 文件时,为了让蜡笔出现在测试程序中究竟发生了什么?我以前在测试程序中运行过非小程序System.out.println,但从未使用任何图形。会是这样System.out.println(Crayon);吗?

另外,如何获得多支蜡笔?我假设它是Crayon crayons = new Crayon;,然后下一个可能是'Crayon crayons2 = new Crayons;`?我不确定。

x,y 坐标需要使用每个蜡笔进行修改,但分配的 UML 告诉我不要将它们设为实例变量,而是将其放入“公共 void paint (Graphics g, int x, int y)”中。到目前为止我对测试程序的了解(可能正确也可能不正确):

import javax.swing.JApplet;
import java.awt.*;

public class BoxOfCrayons extends JApplet {
   Crayon first = new Crayon (Color.red, 50, 250)
4

1 回答 1

0

首先阅读2D Graphics

基本上,您将需要创建某种Cryons 列表。这可以是一个Collection或数组,这取决于你知道什么。我个人会使用 a ArrayList,因为它灵活且易于使用,但不会受到与数组相同的限制。

接下来,为您自己创建一个自定义组件(即BoxOfCryons),该组件从JPanel. 覆盖此类paintComponent方法。在此方法中,遍历Cryons 列表并绘制每一个,将x偏移量增加 last 的宽度Cryon

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g.create();
    int x = 0;
    int y = 0;
    for (Crayon crayon : cryons) {
        crayon.paint(g2d, x, y);
        x += crayon.getWidth();
    }
    g2d.dispose();
}

为自己创建一个从JApplet. 在它的init方法中,将小程序布局管理器设置为BorderLayout并向其添加类的实例BoxOfCryons

于 2013-03-04T03:19:32.617 回答