我们刚学会了如何创建自己的类,而这个特殊的任务我们必须使用图形。我们不得不画一个蜡笔,然后创建一个测试程序,其中有5个蜡笔排列在一起(所以我们只是改变颜色和每个的x,y)。我知道如何改变颜色和x,y coords,但我的问题是......
如何'打印'每支蜡笔?是的,它是一个小程序,是的,我知道我需要一个.html文件。但是,当我运行.html文件时,为了让蜡笔出现,测试程序到底是什么?我之前在使用System.out.println
的测试程序中运行非小程序,但从来没有任何图形。它只是System.out.println(Crayon);
吗?
另外,我如何获得多种蜡笔?我假设它是Crayon crayons = new Crayon
;然后下一个可能是'Crayon crayons2 = new Crayons;`?我不确定。
需要使用每个蜡笔修改x,y坐标,但是赋值的UML告诉我不要将它们设为实例变量,而是将它放在'public 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)
答案 0 :(得分:0)
首先阅读2D Graphics。
基本上,您需要创建某种Cryon
的列表。这可以是Collection
或数组,具体取决于您所知道的。我个人会使用ArrayList
,因为它灵活且易于使用,但不会受到与数组相同的限制。
接下来,创建一个自定义组件(即BoxOfCryons
),它从JPanel
延伸。重写此类paintComponent
方法。在此方法中,浏览Cryon
列表并绘制每个列表,将x
偏移量增加最后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
方法中,将applets布局管理器设置为BorderLayout
并向其添加BoxOfCryons
类的实例。