控制台程序。

 1 import javax.swing.JComponent;
 2 import java.util.*;
 3 import java.awt.*;
 4 import java.awt.geom.*;
 5
 6 @SuppressWarnings("serial")
 7 public class SketcherView extends JComponent implements Observer {
 8   public SketcherView(Sketcher theApp) {
 9     this.theApp = theApp;
10   }
11
12   // Method called by Observable object when it changes
13   public void update(Observable o, Object rectangle) {
14     // Code to respond to changes in the model...
15   }
16
17   // Method to draw on the view
18   @Override
19   public void paint(Graphics g) {
20     // Temporary code...
21     Graphics2D g2D = (Graphics2D)g;                                    // Get a Java 2D device context
22
23     g2D.setPaint(Color.RED);                                           // Draw in red
24
25     // Position width and height of first rectangle
26     Point2D.Float p1 = new Point2D.Float(50.0f, 10.0f);
27     float width1 = 60;
28     float height1 = 80;
29
30     // Create and draw the first rectangle
31     Rectangle2D.Float rect = new Rectangle2D.Float(p1.x, p1.y, width1, height1);
32     g2D.draw(rect);
33
34     // Position width and height of second rectangle
35     Point2D.Float p2 = new Point2D.Float(150.0f, 100.0f);
36     float width2 = width1 + 30;
37     float height2 = height1 + 40;
38
39     // Create and draw the second rectangle
40     g2D.draw(new Rectangle2D.Float(
41                        (float)(p2.getX()), (float)(p2.getY()), width2, height2));
42     g2D.setPaint(Color.BLUE);                                          // Draw in blue
43
44     // Draw lines to join corresponding corners of the rectangles
45     Line2D.Float line = new Line2D.Float(p1,p2);
46     g2D.draw(line);
47
48     p1.setLocation(p1.x + width1, p1.y);
49     p2.setLocation(p2.x + width2, p2.y);
50     g2D.draw(new Line2D.Float(p1,p2));
51
52     p1.setLocation(p1.x, p1.y + height1);
53     p2.setLocation(p2.x, p2.y + height2);
54     g2D.draw(new Line2D.Float(p1,p2));
55
56     p1.setLocation(p1.x - width1, p1.y);
57     p2.setLocation(p2.x - width2, p2.y);
58     g2D.draw(new Line2D.Float(p1, p2));
59
60     g2D.drawString("Lines and rectangles", 60, 250);                   // Draw some text
61
62   }
63
64   private Sketcher theApp;                                             // The application object
65 }

其他部分与上一例相同。

转载于:https://www.cnblogs.com/mannixiang/p/3488339.html

Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)...相关推荐

  1. java 绘制长方形_Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)...

    控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; ...

  2. Java基础之在窗口中绘图——绘制圆弧和椭圆(Sketcher 3 drawing arcs and ellipses)

    控制台程序. 1 import javax.swing.JComponent; 2 import java.util.*; 3 import java.awt.*; 4 import java.awt ...

  3. Java基础之在窗口中绘图——利用多态性使用鼠标自由绘图(Sketcher 7 with a crosshair cursor)...

    控制台程序. 在Sketcher中创建形状时,并不知道应该以什么顺序创建不同类型的形状,这完全取决于使用Sketcher程序生成草图的人.因此需要绘制形状,对它们执行其他操作而不必知道图形是什么.当然 ...

  4. Java基础之在窗口中绘图——使用模型/视图体系结构在视图中绘图(Sketcher 1 drawing a 3D rectangle)...

    控制台程序. 在模型中表示数据视图的类用来显示草图并处理用户的交互操作,所以这种类把显示方法和草图控制器合并在一起.不专用于某个视图的通用GUI创建和操作在SketcherFrame类中处理. 模型对 ...

  5. Visual C++ 2008入门经典 第十五章 在窗口中绘图

    /*第十五章 在窗口中绘图 主要内容: 1 Windows为窗口绘图提供的坐标系统 2 设置环境及其必要性 3 程序如何以及在窗口中绘图 4 如何定义鼠标消息的处理程序 5 如何定义自己的形状类 6 ...

  6. Qt绘制直线、矩形、圆

    Qt绘制直线.矩形.圆 新建一个Qt Widgets Application工程 添加头文件 #include <QPainter> 添加paintEvent函数,代码如下: void M ...

  7. iOS 画线 绘制直线、矩形、三角形

    转载:http://bravoo.diandian.com/ 在UIView中绘制直线.矩形.三角形 直线 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...

  8. JAVA基础(持续更新中)

    JAVA基础 2020年11月27日 21:01 1 预科 a. 什么是计算机 能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 由硬件常见的形式有台式计算机.笔记本计算机.大型计算机等 ...

  9. java用中点画圆法_OpenGL通过中点法绘制直线和圆

    #include #include static int i=1; void Initial(void) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); //设置窗口背 ...

最新文章

  1. Java主要知识结构
  2. solr/solrj原子更新
  3. C语言学生学籍管理系统 链表+存储数据到文档
  4. 计算Gaunt积分 m1m2<0
  5. UIDynamicBehavior的行为类翻译
  6. RabbitMQ消费消息幂等性问题
  7. 后置处理器----JSON提取器
  8. Vue:触发视图更新的hack
  9. 这大概是今年最值得推荐的“数据分析工具”
  10. 脑波控制机械手,双手打字也无法自证清白| Science Robotics
  11. atitit.RESTful服务的概览and框架选型
  12. django 序列化组件Serializer
  13. EGO Swarm翻译
  14. 学习mysql比较好一些书籍
  15. 商城超卖问题的几种解决方案
  16. 一文讲清楚什么是类型化数组、ArrayBuffer、TypedArray、DataView等概念
  17. 2022/03/03js作业第一个不同宽度变色第二个是输入几年几月几日判断是今年的第几天(不算闰年2月为28日)
  18. Maven当中resources标签的用法
  19. 安卓手机怎么删除html文件,安卓手机如何打开和删除7z文件?
  20. BI分析工具选型:从PowerBI到FineBI的9个理由!

热门文章

  1. 工业缺陷检测工程实践综述
  2. MYSQL——round函数
  3. 历届蓝桥杯JavaC组真题标题
  4. 牛客网SQL大厂真题—SQL158:每类视频近一个月的转发量/率
  5. 北京周末游周边 —— 朝阳公园
  6. 论如何用python自动下载爱的妹子视频~嘿嘿嘿~
  7. CAXA实体设计 2020 如何将实体分割为两块不相连的部分?
  8. 建模大神教你如何简单制作写实武器道具
  9. 新版iTunesConnect应用撤销后重新上传二进制代码。
  10. HALO博客从GAYHUB克隆到云服务器搭建 一