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

这篇博客介绍了如何在Java环境中使用`JComponent`和`Graphics2D`进行图形绘制,具体展示了如何绘制红色和蓝色的长方形,并用线条连接对应角落,实现简单的图形交互效果。
摘要由CSDN通过智能技术生成

控制台程序。

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.theApp = theApp;

}

// Method called by Observable object when it changes

public void update(Observable o, Object rectangle) {

// Code to respond to changes in the model...

}

// Method to draw on the view

@Override

public void paint(Graphics g) {

// Temporary code...

Graphics2D g2D = (Graphics2D)g; // Get a Java 2D device context

g2D.setPaint(Color.RED); // Draw in red

// Position width and height of first rectangle

Point2D.Float p1 = new Point2D.Float(50.0f, 10.0f);

float width1 = 60;

float height1 = 80;

// Create and draw the first rectangle

Rectangle2D.Float rect = new Rectangle2D.Float(p1.x, p1.y, width1, height1);

g2D.draw(rect);

// Position width and height of second rectangle

Point2D.Float p2 = new Point2D.Float(150.0f, 100.0f);

float width2 = width1 + 30;

float height2 = height1 + 40;

// Create and draw the second rectangle

g2D.draw(new Rectangle2D.Float(

(float)(p2.getX()), (float)(p2.getY()), width2, height2));

g2D.setPaint(Color.BLUE); // Draw in blue

// Draw lines to join corresponding corners of the rectangles

Line2D.Float line = new Line2D.Float(p1,p2);

g2D.draw(line);

p1.setLocation(p1.x + width1, p1.y);

p2.setLocation(p2.x + width2, p2.y);

g2D.draw(new Line2D.Float(p1,p2));

p1.setLocation(p1.x, p1.y + height1);

p2.setLocation(p2.x, p2.y + height2);

g2D.draw(new Line2D.Float(p1,p2));

p1.setLocation(p1.x - width1, p1.y);

p2.setLocation(p2.x - width2, p2.y);

g2D.draw(new Line2D.Float(p1, p2));

g2D.drawString("Lines and rectangles", 60, 250); // Draw some text

}

private Sketcher theApp; // The application object

}

其他部分与上一例相同。

Java基础之在窗口中绘图——绘制星星(StarApplet 1)

Applet程序. 可以把更复杂的几何形状定义为GeneralPath类型的对象.GeneralPath可以是直线.Quad2D曲线和Cubic2D曲线的结合体,甚至可以包含其他GeneralPath ...

Java基础之在窗口中绘图——绘制曲线(CurveApplet 1)

Applet程序. 定义自由曲线的类有两个,其中一个定义二次曲线,另一个定义三次曲线.这些自由曲线是用一系列线段定义的参数化曲线.二次曲线段用方程定义,方程包含独立变量x的平方.三次曲线也用方程定义, ...

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

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

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

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

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

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

Java基础之在窗口中绘图——填充星型(StarApplet 2 filled stars)

Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.GeneralPath; @SuppressWarnin ...

Java基础之在窗口中绘图——渐变填充(GradientApplet 1)

Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("s ...

Java基础之在窗口中绘图——移动曲线的控制点(CurveApplet 3 moving the control points)

Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; import javax.swing.event. ...

Java基础之在窗口中绘图——显示曲线的控制点(CurveApplet 2 displaying control points)

Applet程序. import javax.swing.*; import java.awt.*; import java.awt.geom.*; @SuppressWarnings("s ...

随机推荐

Ros与Vrep平台搭建

参考资料: ROS安装: ros 是一个framework 和Android有点像,内核用的linux.Ros提供了一种供机器人开发者迅速上手的一个平台, 可以快速搭建自己的应用,利用ros下面自带的 ...

Bug严重级别分类

BUG等级划分,一般划分为:严重BUG.较严重BUG.一般性BUG.建议性BUG A类—严重错误,包括以下各种错误: 1. 由于程序所引起的死机,非法退出 2. 死循环 3. 数据库发生死锁 4. 因 ...

C#中out的用法

out的用法 out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化.若要使用 out 参数,方法定义和调用方法都必须显式使用 out ...

CodeForces 489B (贪心 或 最大匹配) BerSU Ball

题意: 有m个男孩和n个女孩,每个人都有一个舞蹈熟练度,用一个不超过100的正整数来表示. 一个男孩和一个女孩能够结为舞伴当且仅当两人的熟练度相差不超过1. 问最多能结成多少对舞伴 分析: 这是一个二 ...

Word添加新编号

要用到(1)(2),不想手写,但是word只有1.2.3和1)2)3),我就自定义哦.

【Electron】Electron开发入门

Electron简介: Electron提供了丰富的本地(操作系统)的API,使你能够使用纯JavaScript来创建桌面应用程序,并且跨平台(win,mac,linux等各种PC端平台).与其它各种 ...

Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

python发送邮件脚本ssl 465端口

#coding:utf8 from smtplib import SMTP_SSL from email.header import Header from email.mime.text impor ...

PAT甲1004 Counting Leaves【dfs】

1004 Counting Leaves (30 分) A family hierarchy is usually presented by a pedigree tree. Your job is ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值