AWT08-绘图
1.组件绘图原理
Java GUI能展示出不同对话框、窗口等等组件外观的本质其实就是绘图。
在AWT中,真正提供绘图功能的是Graphics对象,在Component中提供了三个方法来完成组件图形的绘制与刷新。
方法名 | 说明 |
Paint(Graphics g) | 绘制组件的外观 |
update(Graphics g) | 内部调用paint方法,刷新组件的外观 |
repaint() | 调用update方法,刷新组件的外观 |
一般情况下,Paint和update由系统调用,如果程序想要重新绘制组件可以使用repaint()。
2.Graphics的使用
AWT提供了Canvas作为画布,提供了Graphics作为画笔,通过调用Graphics的setColor方法可以改变颜色。
步骤:
1.自定义类,继承Canvas类,重写Paint方法完成绘制。
2.在Paint方法真正的开始绘画之前,通过调用setColor、setFont等方法设置画笔的颜色、字体等属性。
3.调用画笔的drawXxx方法开始绘画
常用方法
方法名 | 说明 |
setColor(Color c) | 设置颜色 |
setFont(Font font) | 设置字体 |
drawLine() | 绘画直线 |
drawRect() | 绘画矩形 |
drawRoundRect() | 绘画圆角矩形 |
drawOval() | 绘画椭圆形 |
drawPolygon() | 绘画多边形 |
drawArc() | 绘画圆弧 |
drawPolyLine() | 绘画折线 |
fillRect() | 填充矩形 |
fillRoundRect() | 填充圆角矩形 |
fillOval() | 填充椭圆 |
fillPolygon() | 填充多边形 |
fillArc() | 填充圆弧 |
drawImage() | 绘画位图 |
- 1 import javax.swing.*;
- 2 import java.awt.*;
- 3 import java.awt.event.ActionEvent;
- 4 import java.awt.event.ActionListener;
- 5 import java.awt.event.WindowAdapter;
- 6 import java.awt.event.WindowEvent;
- 7
- 8 public class simpleDrawDemo {
- 9 private final String RECT_SHAPE = "rect";
- 10 private final String OVAL_SHAPE = "oval";
- 11 private String shape = "";
- 12
- 13 Frame frame = new Frame("简单绘图实验");
- 14
- 15 Button rect = new Button("绘制矩形");
- 16 Button oval = new Button("绘制椭圆");
- 17
- 18 private class MyCanvas extends Canvas{
- 19 @Override
- 20 public void paint(Graphics g){
- 21 if (shape.equals(RECT_SHAPE)){
- 22 g.setColor(Color.PINK);
- 23 g.drawRect(100,100,300,200);
- 24 }else if (shape.equals(OVAL_SHAPE)){
- 25 g.setColor(Color.PINK);
- 26 g.drawOval(100,100,300,200);
- 27 }
- 28 }
- 29 }
- 30
- 31 MyCanvas canvas = new MyCanvas();
- 32
- 33 public void init(){
- 34 rect.addActionListener(new ActionListener() {
- 35 @Override
- 36 public void actionPerformed(ActionEvent e) {
- 37 shape = RECT_SHAPE;
- 38 canvas.repaint();
- 39 }
- 40 });
- 41
- 42 oval.addActionListener(new ActionListener() {
- 43 @Override
- 44 public void actionPerformed(ActionEvent e) {
- 45 shape = OVAL_SHAPE;
- 46 canvas.repaint();
- 47 }
- 48 });
- 49
- 50 frame.addWindowListener(new WindowAdapter() {
- 51 @Override
- 52 public void windowClosing(WindowEvent e) {
- 53 System.exit(0);
- 54 }
- 55 });
- 56 canvas.setPreferredSize(new Dimension(600,400));
- 57 Box buttonBox = Box.createHorizontalBox();
- 58 buttonBox.add(rect);
- 59 buttonBox.add(oval);
- 60 frame.add(canvas,BorderLayout.NORTH);
- 61 frame.add(buttonBox,BorderLayout.SOUTH);
- 62
- 63 frame.pack();
- 64 frame.setVisible(true);
- 65 }
- 66
- 67 public static void main(String[] args) {
- 68 new simpleDrawDemo().init();
- 69 }
- 70 }
AWT08-绘图的更多相关文章
- Canvas绘图之平移translate、旋转rotate、缩放scale
画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...
- 用html5的canvas和JavaScript创建一个绘图程序
本文将引导你使用canvas和JavaScript创建一个简单的绘图程序. 创建canvas元素 首先准备容器Canvas元素,接下来所有的事情都会在JavaScript里面. <canvas ...
- echarts+php+mysql 绘图实例
最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表. 我使用的是echart3,相比较第二版,echar ...
- html5 canvas常用api总结(二)--绘图API
canvas可以绘制出很多奇妙的样式和美丽的效果,通过几个简单的api就可以在画布上呈现出千变万化的效果,还可以制作网页游戏,接下来就总结一下和绘图有关的API. 绘画的时候canvas相当于画布,而 ...
- HTML5_04之SVG绘图
1.关于Canvas绘制图像: 问题:需要绘制多张图片时,必须等待所有图片加载完成才能开始绘制:而每张图片都是异步请求,彼此没有先后顺序,哪一张先加载完成完全无法预测: 方案: var progres ...
- HTML5 学习总结(四)——canvas绘图、WebGL、SVG
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...
- AR创意分享:儿童涂鸦遇上程序绘图
第一节 临摹 小明经常临摹同桌小美的画作. 美术课上,老师表扬了小美的新作. 图1.1 小美的作品<蒙娜·毛虫的微笑> 临,是照着原作画:摹,是用薄纸张蒙在原作上面画. 第二节 借画 小明 ...
- C# 一段绘图代码 在form_load事件不能显示图
今天无意将一段绘图代码 写在form_load事件了,结果不能显示绘图.(代码:Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.R ...
- HTML5学习总结——canvas绘制象棋(canvas绘图)
一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...
- Windows Form调用R进行绘图并显示
R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上. 1 前提准备 安装R软件,需要安装32位的R软件,6 ...
随机推荐
- webug第四关:告诉你了flang是5位数
第四关:告诉你了flang是5位数 开始看到有点懵 于是不要脸的看源码 burp跑弱口令
- springboot同一项目部署多实例
添加 -Dserver.port=xxxx 将配置文件放在nacos注册中心时,要记得在启动第二个实例记得把原来端口注释掉,如果配置文件在本地就不必注释掉了
- 他凭借这70份PDF,3170页文件,成功斩获了含BATJ所有的offer
前言 最近我一直在面试高级工程师,不管初级,高级,程序员,我想面试前,大家刷题一定是是少不了吧. 我也一样,我在网上找了很多面试题来看,最近又赶上跳槽的高峰期,好多粉丝,都问我要有没有最新面试题,索性 ...
- MathType总结编辑括号的类型(中)
MathType中的符号模板多种多样,能够满足各类用户的使用需求.即使是一些不常用的符号也有相应的模板,因为在工作学习中我们都需要他们,只是有的用的多有的用的少而已,下面我们就一起来看看公式编辑器编辑 ...
- ntfs和fat32的区别
ntfs和fat32是两种不同的磁盘文件系统格式,虽然他们有一定的相似点,但还是具有很大的差异.今天,小编就带大家了解一下ntfs和fat32的区别. 图1 :u盘 一.分区容量 fat32能够有效管 ...
- leetcode 493
//利用归并排序来完成,归并排序可参考前面代码,归并排序可用来完成这类逆序对之类的问题,采用分治的思想,对于归并排序的代码不需要多改动,只需要在归并之前进行一次寻找操作,找出count的数量 clas ...
- The Balance POJ - 2142
首先,可以知道题目要求解一个\(ax+by=c\)的方程,且\(x+y\)最小. 感性证明: 当\(a>b\)时,\(y\)取最小正整数解,\(b\)减的多,\(a\)增的少,此时\(x+y\) ...
- JZOJ 【NOIP2017提高A组模拟9.14】捕老鼠
JZOJ [NOIP2017提高A组模拟9.14]捕老鼠 题目 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕 ...
- windows下多Python环境指定pip安装模块到对应Python环境下
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿在windows下装了2套Python,一套是直接安装的Pytho ...
- PyQt(Python+Qt)学习随笔:model/view架构中支持QListView列表中展示图标的两种方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QListView列表视图中的项不但可以展示文字,也可以展示图标和复选框,同时可以指定项是否可以拖 ...