控制台程序. 在Sketcher中创建形状时,并不知道应该以什么顺序创建不同类型的形状,这完全取决于使用Sketcher程序生成草图的人.因此需要绘制形状,对它们执行其他操作而不必知道图形是什么.当然,多态性在这里是有帮助的. 最简单的方法可能是为Sketcher形状类定义通用的基类,并在每个形状类中包含一个成员来存储某种java.awt.geom形状对象,接着把对形状类对象的引用存储为基类类型以获得多态行为. 1.通用基类: import java.awt.*; import java.io.…
控制台程序. 在模型中表示数据视图的类用来显示草图并处理用户的交互操作,所以这种类把显示方法和草图控制器合并在一起.不专用于某个视图的通用GUI创建和操作在SketcherFrame类中处理. 模型对象包含构成草图的文本和图形.模型类可以称为SketcherModel,表示模型视图的类可以称为SketcherView. 应用程序对象全面负责管理程序涉及的其他对象之间的链接.只要应用程序类能使每个对象可用,可以访问应用程序对象的任何对象就都要与其他对象进行通信.因此,应用程序对象是对象之间的通信通…
Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("serial") public class GradientApplet extends JApplet { // Initialize the applet @Override public void init() { GradientPane pane = new GradientPane();…
Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.GeneralPath; @SuppressWarnings("serial") public class StarApplet extends JApplet { // Initialize the applet @Override public void init() { StarPane pane = new StarPane(); //…
Applet程序. 可以把更复杂的几何形状定义为GeneralPath类型的对象.GeneralPath可以是直线.Quad2D曲线和Cubic2D曲线的结合体,甚至可以包含其他GeneralPath对象. 1.绘制星星: import java.awt.geom.*; public class Star { // Return a path for a star at x,y public static GeneralPath starAt(float x, float y) { Point2…
Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; import javax.swing.event.MouseInputAdapter; import java.awt.event.MouseEvent; @SuppressWarnings("serial") public class CurveApplet extends JApplet { // Initialize the app…
Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("serial") public class CurveApplet extends JApplet { // Initialize the applet @Override public void init() { pane = new CurvePane(); // Create pane cont…
Applet程序. 定义自由曲线的类有两个,其中一个定义二次曲线,另一个定义三次曲线.这些自由曲线是用一系列线段定义的参数化曲线.二次曲线段用方程定义,方程包含独立变量x的平方.三次曲线也用方程定义,方程包含独立变量x的立方. QuadCurve2D:二次曲线的抽象基类,曲线用两个端点和一个用来定义两端切线的控制点来定义.切线是从端点到控制点的直线. CubicCurve2D:三次曲线的抽象基类,曲线用两个端点和两个用来定义两端切线的控制点来定义.切线是从端点到对应控制点的直线. import…
控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("serial") public class SketcherView extends JComponent implements Observer { public SketcherView(Sketcher theApp) { this.theAp…
控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("serial") public class SketcherView extends JComponent implements Observer { public SketcherView(Sketcher theApp) { this.theAp…