我们刚刚学会了如何创建自己的类,在这个特殊的任务中,我们必须使用图形。我们必须画一支蜡笔,然后创建一个测试程序,其中有5支蜡笔并排排列(所以我们只改变每支蜡笔的颜色和x,y(。我知道如何改变颜色和x,y坐标,但我的问题是…
如何"打印"每支蜡笔?是的,这是一个小程序,是的,我知道我需要一个.html文件。但是,当我运行.html文件时,为了让蜡笔显示出来,测试程序中到底发生了什么?我以前在使用System.out.println
的测试程序中运行过非小程序,但从未运行过任何图形。它会只是System.out.println(Crayon);
吗?
另外,如何获得多支蜡笔?我假设它是Crayon crayons = new Crayon
;,然后下一个可能是"蜡笔小新;"?我不确定。
x,y坐标需要用每个蜡笔修改,但任务的UML告诉我不要让它们成为实例变量,而是把它放在"公共空白油漆(图形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)
开始阅读2D图形。
基本上,您需要创建某种类型的Cryon
s列表。这可以是Collection
或数组,具体取决于您所知道的内容。我个人会使用ArrayList
,因为它灵活易用,但不会受到与数组相同的限制。
接下来,为自己创建一个从JPanel
扩展而来的自定义组件(即BoxOfCryons
(。重写此类paintComponent
方法。在此方法中,运行Cryon
s的列表并绘制每一个,将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
方法中,将小程序布局管理器设置为BorderLayout
,并向其中添加BoxOfCryons
类的实例。