java绘图坐标体系

java绘图坐标体系
java绘图坐标体系

java绘图坐标体系

像素:计算机屏幕上显示的内容都是屏幕上的每一个像素组成。例如:计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度单位,而厘米是长度单位,两者无法比较。

绘图的原理Part1

Component类提供了两个和绘图相关最重要的方法:

①:paint(Graphics g):绘制组件的外观

注意点:当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。

在以下情况会自动调用paint()方法:

一:窗口最小化,再最大化。

二:窗口的大小发生变化(注意是大小变化,而不是移动窗口)

三:repaint函数被调用

②:repaint():刷新组件的外观

注意点:起到动感的作用。

Graphics 类:

Graphics 可以理解就是画笔,为我们提供各种绘制图形的方法:

①:画直线drawLine(int x1,int y1,int x2,int y2);

②:画矩形边框drawRect(intx,inty,intwidth,int height);

③:画椭圆边框drawOval(intx,inty,intwidth,int height);

④:填充矩形fillRect(intx,inty,intwidth,int height);

⑤:填充椭圆 fillOval(intx,inty,intwidth,int height);

⑥:画图片 drawImage(Image img,intx,int y,.....);

⑦:画字符串drawString(String str,intx,int y);

⑧:设置画笔的字体setFont(Font font);

⑨:设置画笔的颜色setColor(Color c);

举例如下:

/**

* java绘图原理

* 不能再JFrame上画图,但是可以在JPanel上画图

*/

package day0218;

importjava.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Panel;

import java.awt.Toolkit;

importjavax.swing.JFrame;

import javax.swing.JPanel;

public class Demo18_1 extends JFrame {

MyPanelmp = null;

public Demo18_1() {

mp=new MyPanel();

this.add(mp);

this.setSize(800, 800);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public static void main(String[] args) {

Demo18_1 demo18_1=new Demo18_1();

}

}

// 定义一个MyPanel(是我自己的面板,是用于绘图和显示绘图的区域)

class MyPanel extends JPanel {

// 覆盖JPanel的paint方法

// Graphics是绘图的重要类,你可以把他理解成一只画笔(可以画各种各样的) public void paint(Graphics g) {

// 调用父类函数完成初始化(这句话不能少,现在似乎可以不加,最好加上)

super.paint(g);

// // 画一个圆

// g.drawOval(20, 20, 40, 40);

// //g.drawOval(70, 20, 40, 40);

//

// //画出直线

// g.drawLine(40, 40, 90, 90);

//

// //画出矩形边框

// g.drawRect(100, 100, 50, 30);

//画出填充矩形

//设置颜色,若每次颜色不一样,每次都要设置

// g.setColor(Color.green);

// g.fillRect(150, 150, 60, 80);

// g.setColor(Color.yellow);

// g.fillRect(250, 250, 60, 80);

//

// //在面板上画出图片(要先准备张图片)

// Image

im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/33.jpg"));

// //显示图片 this指的是这里的JPanel

// g.drawImage(im, 90, 90, 356, 521, this);

//设置画笔的颜色

// g.setColor(Color.PINK);

// g.setFont(new Font("华文琥珀", Font.BOLD, 55));

// //如何画字

// g.drawString("林峰万岁", 100, 200);

}

}

java事件处理机制

采取的是“委派事件模型”,是指当事件发生(比如按了鼠标,按了键盘)的时候,产生事件的对象(即事件源),会把此信息传递给事件的监听者处理的一种方式,而这里所说的信息实际上就是java.awt.evebt事件类库里某个类所创建的对象,我们暂时称之为事件的对象。

小练习:点击不同的按钮,让面板的背景色发生相应的变化。

代码如下:

/**

* 讲解java中的事件处理机制

* 理解:一个事件可以被多个类监听的

*

* 一个类要实现监听的步骤

* 1.实现相应的接口(KeyListener、MouseListener、ActionListener、WindowListener) * 2.把接口的处理方法根据需要重新编写(Override)

* 3.在事件源注册监听

* 4.时间传递是靠事件对象

*/

package day0218;

importjava.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

importjavax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Shijian extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;

// 定义

JPaneljp = null;

JButton jb1, jb2;

publicShijian() {

jp = new JPanel();

jb1 = new JButton("黑色");

jb2 = new JButton("红色");

this.add(jb1, BorderLayout.NORTH);

jp.setBackground(Color.gray);

this.add(jp);

this.add(jb2, BorderLayout.SOUTH);

Cat mycat = new Cat();

// 注册监听

jb1.addActionListener(this);

jb1.addActionListener(mycat);

// 指定action命令

jb1.setActionCommand("aa");

jb2.addActionListener(this);

jb2.setActionCommand("bb");

this.setSize(300, 300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);

}

public static void main(String[] args) {

Shijiansj = new Shijian();

}

@Override

public void actionPerformed(ActionEvent e) {

// 判断是哪个按钮被点击

if (e.getActionCommand().equals("aa")) {

// System.out.println("点击了黑色");

jp.setBackground(Color.black);

} else if (e.getActionCommand().equals("bb")) {

// System.out.println("点击了红色");

jp.setBackground(Color.red);

}

}

}

// 若要让猫类监听,那么也要注册监听

class Cat implements ActionListener {

@Override

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

if (arg0.getActionCommand().equals("aa")) {

System.out.println("猫猫也知道你按了黑色按钮");

} else if (arg0.getActionCommand().equals("bb")) {

System.out.println("猫猫也知道你按了红色按钮");

}

}

}

// class MyPanel extends JPanel {

//

// public void paint(Graphics g) {

// super.paint(g);

//

// }

//

// }

小练习:怎么让小球受到键盘的控制,上下左右移动。

代码如下:

/**

* 加深对事件处理机制的理解

* 通过上下左右键,来控制小球的位置

*

* 我自我感觉是谁实现了监听的,就是在注册监听中被监听的 */

package day0218;

importjava.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

importjavax.swing.JFrame;

import javax.swing.JPanel;

public class Shijian2 extends JFrame {

MyPanelmp=null;

public Shijian2() {

mp=new MyPanel();

this.add(mp);

//加上监听(这次是让mp来监听,而sj2是被监听的,因为mp监听到了,才能移动位置) this.addKeyListener(mp);

this.setTitle("小球移动");

this.setSize(400,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public static void main(String[] args) {

Shijian2 sj2=new Shijian2();

}

}

classMyPanel extends JPanel implements KeyListener{

int x=10;

int y=10;

public void paint(Graphics g) {

super.paint(g);

//画一个点(小圆圈)

g.fillOval(x, y, 10, 10);

}

@Override

//keyTyped表示表示一个键被按下去,但是这个键有具体的值,而且被显示出来了

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

@Override

//keyPressed表示一个键被按下去,但是这个键没有具体的值

public void keyPressed(KeyEvent e) {

//System.out.println((e.getKeyChar())+"键被按下");

if (e.getKeyCode()==KeyEvent.VK_DOWN) {

//System.out.println("向下");

//如果想让小圆走的快点,可以写上y+10类似的,

y++;

}else if (e.getKeyCode()==KeyEvent.VK_UP) {

y--;

}else if (e.getKeyCode()==KeyEvent.VK_RIGHT) {

x++;

}else if (e.getKeyCode()==KeyEvent.VK_LEFT) {

x--;

}

//调用repaint函数,来重绘界面(放在if语句里面也可以,但是每个if语句里面都要写) this.repaint();

}

@Override

//键被释放

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

}

几个重要的概念:事件源,事件,事件监听器

一、事件源

是一个产生(或触发)事件的对象,比如前面的JButton的一个对象jb1,当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。

二、事件

是承载事件源状态改变时的信息对象。或者说,事件是事件源向事件监听器传输事件源状态信息的载体。在用户与GUI组件进行交互时就会生成事件,比如当鼠标在面板中移动,就会生成一个鼠标移动事件的对象,而这个对象保存着当前鼠标在面板中的位置信息。

注:java.awt.event包和javax.swing.event包中定义了各种事件类型,常见的事件类有:

三、事件监听器接口

事件监听者实际上就是一个类,该类实现了某个事件监听器接口。比如前面案例中的MyPanel是一

个类,它实现了ActionListener接口,那它就可以作为一个事件监听者,对接受到的事件进行处理。

事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现一个事件监听

接口,也可以实现多个监听接口。

注:java.awt.event包和javax.swing.event包中定义了这些接口,常用的事件监听接口:java事件处理机制

事件编程步骤:

①:编写事件处理类

②:根据需求给事件处理类实现监听器接口

③:在事件处理类中重写(实现)其事件处理的函数

④:在事件源类中指定该时间的监听器(响应者是谁),即注册监听

总结注意事项:

1.java采用委托机制处理事件

2.java中的事件是分类的,比如对窗体事件、鼠标事件、按键事件、操作事件[按按钮]

3.java中的一个类要监听某个事件,则必须实现相应的事件监听接口

4.事件监听接口有多种,程序员应当针对不同的情况,实现不同的监听接口,比如监听鼠标事件就应

当实现MouseListener;要监听键盘事件,就应当实现KeyListener...

5.在实现监听接口的类(事件监听者/类)中,需要重写处理函数,比如实现了ActionListener接口,就应该重写actionPerformed(ActionEvent e),可以参考前面的事件监听器接口表格。

6.在事件源中需要注册事件听听类,否则事件监听类接收不到事件源发生的事件。

JAVA-画图工具全解

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。本报告中介绍了用JAVA语言实现画笔系统的全部过程。 本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。 本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形、修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能以及清空整个画面的功能 关键词:画图工具,JA V A

目录 摘要 (1) 目录 (2) 1.绪论 (3) 2. 开发环境介绍 (4) 3.需求分析 (5) 3.1总体目标..................................... 错误!未定义书签。 3.2要实现的功能 (7) 4.概要设计 (8) 4.1设计准备 (8) 4.2需要用到的类 (8) 5.详细设计 (9) 5.5类的设计 (9) 5.2类的方法设计 (9) 6.测试数据及运行结果 (8) 7.总结 (15) 8.参考文献 (15) 9.源程序 (15)

Java画图软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 画图软件设计 学生姓名:周敏婷 学号:2011914123 年级专业:11级教育技术学2班 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 画图软件功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 颜色选择器 (5) 3.2.2 控制画笔样式 (5) 3.2.3 选取颜色按钮的监听件类 (6) 3.2.4 设计总体认识 (6) 3.2.5 程序流程图 (7) 4. 运行结果 (7) 5. 测试分析 (8) 5.1 程序运行情况 (8) 6. 源程序 (8) 参考文献 (14) 设计总结 (14)

摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。 关键字:java,画图类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。

JAVA绘图实验报告

南京工程学院 实 验 报 告 课程名称 java基础 实验项目名称 图形用户界面设计 实验学生班级 实验学生姓名 学 号 同组学生姓名 无 实验时间 2012年11月 实验地点 实验成绩评定 指导教师签字 年 月 日 一、实验目的和要求 1.目的:掌握java awt及swing组件的使用方法,包括窗口、框 架、对话框、布局方式、面板、文本编辑器、按钮、组合框等,合理利 用委托事件处理模型,掌握不同组件,不同事件的事件处理方法,设计 出能够响应事件的java图形用户界面。 2.要求:设计图形用户界面,事件处理,异常处理并弹出对话框, 提示重新输入信息。 二、实验题目 验证哥德巴赫猜想,添加图形用户界面 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 1.添加图形用户界面 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class gdbh extends frame implements actionlistener //窗口框架响应单击事件,利用awt组件设计框架 { private button button; //按钮 private textfield text1; //文本行 private textarea text2; //文本区 public gdbh() { super(验证哥德巴赫猜想); //设置框架窗口标题 this.setbounds(450, 200, 350, 400); //设置框架的位置 和尺寸 this.setresizable(false); // 设置框

java简易画图板

华北科技学院 课程设计说明书 班级: 网络B101 设计题目: 画图板软件开发和设计 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____ 目录 1 引言 (1)

1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 4 详细设计与实现 (6) 4.1 菜单栏模块 (6) 4.2 文字字型工具栏模块 (7) 4.3 工具栏模块 (8) 4.4 颜色选择面板模块 (10) 4.5 鼠标状态栏模块 (12) 4.6 画图区域以及整体布局模块 (13) 5 小结和展望 (15) 参考文献 (17) 附录 (17) 使用说明书 (17)

1引言 1.1课程设计选题 《画图板软件开发和设计》 1.2课程设计的目的 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。所以这次课程设计我做的就是一个仿照Windows画板的程序。 通过画图板软件开发与设计,更深刻地体会java语言较之其他语言在图形用户界面的优势。熟悉java语言中常用的关于画图的各个类的功能和常用的方法(java图形用户界面中的众多函数与类的关系),并在实验过程中加深对java语言的理解与运用。 2需求分析 2.1 功能需求 对于绘图软件,应具备最基本的绘制直线,矩形框,圆形框,椭圆框等最基本功能,此外,要可以对绘制的图形进行修改;将绘制好的图形进行保存,打开以前保存的图形;在需要的时候,可以绘制实心矩形,实心圆形,实心椭圆等常见的几何图形。可

Java实现简单的绘图软件

项目效果图: 项目源代码: import java.awt.*; import java.awt.event.*; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; /* author: 蒋冰*/ public class ImageDraw { private int typeFlag = 1; private int endFlag = 1; private int strokeTemp = 1; private Color color = Color.black;

private BasicStroke stroke = new BasicStroke(); private float pre_x = 0; private float pre_y = 0; private float start_x = 0; private float start_y = 0; private float start_X = 0; private float start_Y = 0; private float end_x = 0; private float end_y = 0; private float width = 0; private float height = 0; private final int AREA_WIDTH = 700; private final int AREA_HEIGHT = 400; private Line2D.Float line; private Rectangle2D.Float rect; private Ellipse2D.Float ellipse; private File imageFile; BufferedImage image = new BufferedImage(AREA_WIDTH , AREA_HEIGHT , BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) image.getGraphics(); private JFrame frame = new JFrame("简单手绘程序"); private DrawPanel drawArea = new DrawPanel(); JButton buttonShowColor = new JButton(""); public void init(){ g2.fillRect(0 , 0 ,AREA_WIDTH , AREA_HEIGHT); g2.setColor(Color.black); drawArea.setPreferredSize(new Dimension(AREA_WIDTH , AREA_HEIGHT)); drawArea.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { do_mouseDragged(e); } }); drawArea.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e1){ do_mousePressed(e1);

JAVA实验报告 简单绘图程序

实验三绘制图形 一、实验目的 学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面框架通过实验熟悉swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。 二、实验内容 设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。编写的程序要求能够实现保存和读取的功能。 三、实验代码 Main.java import ; import ; import ; import import import import winpaint.WinToolBar; import winpaint.windowsPaint; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JPanel paintWin = new windowsPaint("画图"); paintWin.setBounds(0, 30, 1000, 1000); paintWin.setLayout(null); paintWin.setVisible(true); JToolBar tool = new WinToolBar((windowsPaint)paintWin); tool.setBounds(0, 0, 1000, 30); tool.setVisible(true); JFrame frame = new JFrame();

Java画图板程序设计报告

西安科技大学Java语言课程设计报告 ¥

题目:画图板应用程序开发 & 班级: 学号: 姓名: 2010年 12 月 目录 1 设计题目及具体要求 (3) · 2 总体设计 (6) 3 详细设计与实现 (4) 4 系统测试 (11) 5 设计小结 (31) 参考文献 $

: 1、设计题目及具体要求 题目需求 ? 1. 设计题目:小画图板的开发。 2. 重点分析 本软件的重难点为主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。 3. 实现功能

1.新建一个空白图形文件:用于绘制新的图形。 2.打开或保存一个图形文件,便于对图形文件的管理。 3.绘制一些基本的图形组件:直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。 4.用鼠标在绘图板上单击拖动进行随笔花。 5.` 6.橡皮擦:可以将已绘制的图形擦掉。 7.添加文字:可以在绘图区域内添加文字。 8.选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。当然,在下面的程序分析中可以看到,由于设置了字体选择数组,使得可以随意添加系统支持的任何字体。大大方便和简化了程序设计。 9.选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体,斜体,用同时选中两者,只选择其中一种或两者都不选中3种选择方式。10.设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩,生动活泼。 10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不同的。 当作用于绘制图形组建时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。 ;

java绘图坐标体系

java绘图坐标体系 像素:计算机屏幕上显示的内容都是屏幕上的每一个像素组成。例如:计算机显示器的分辨率是800*600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图的原理Part1 Component类提供了两个和绘图相关最重要的方法: ①:paint(Graphics g):绘制组件的外观 注意点:当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。 在以下情况会自动调用paint()方法: 一:窗口最小化,再最大化。 二:窗口的大小发生变化(注意是大小变化,而不是移动窗口) 三:repaint函数被调用 ②:repaint():刷新组件的外观 注意点:起到动感的作用。 Graphics 类: Graphics 可以理解就是画笔,为我们提供各种绘制图形的方法: ①:画直线drawLine(int x1,int y1,int x2,int y2); ②:画矩形边框drawRect(intx,inty,intwidth,int height); ③:画椭圆边框drawOval(intx,inty,intwidth,int height); ④:填充矩形fillRect(intx,inty,intwidth,int height);

⑤:填充椭圆 fillOval(intx,inty,intwidth,int height); ⑥:画图片 drawImage(Image img,intx,int y,.....); ⑦:画字符串drawString(String str,intx,int y); ⑧:设置画笔的字体setFont(Font font); ⑨:设置画笔的颜色setColor(Color c); 举例如下: /** * java绘图原理 * 不能再JFrame上画图,但是可以在JPanel上画图 */ package day0218; importjava.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.Panel; import java.awt.Toolkit; importjavax.swing.JFrame; import javax.swing.JPanel; public class Demo18_1 extends JFrame { MyPanelmp = null; public Demo18_1() { mp=new MyPanel(); this.add(mp);

课程设计-JAVA-画板-模拟画图工具

目录 1 课题介绍 (1) 1.1 课程设计目的 (1) 1.2 课程设计要求 (1) 1.3 课程设计主要知识点 (1) 2 总体设计 (2) 2.1 画板界面设计图 (2) 2.2 模块概述 (2) 2.2.1 文件操作 (2) 2.2.2 图形绘制 (2) 3 详细设计与实现 (4) 3.1 框架类DrawGraphic (4) 3.1.1菜单 (4) 3.1.2工具栏 (6) 3.1.3画图区域 (7) 3.2 基本图形类 (10) 3.2.1 父类Drawings (10) 3.2.2 子类(只列出部分) (10) 4 设计中的难点 (12) 4.1多态与动态绑定 (12) 4.2重绘的理解 (12) 4.3文件的新建、打开和保存 (12) 5 运行测试 (13) 6 总结 (15) 参考文献 (16)

模拟画图 1 1 课题介绍 1.1 课程设计目的 课程设计题目:模拟画图 要求设计一个程序,模拟Windows中的画图程序,实现图形图像的编辑,修改,保存等功能。 1.2 课程设计要求 (1)程序中必须包括“新建”、“打开”、“保存”,用户可以选择,实现对文件的操作; (2)画图板的绘图按钮用来画出不同的图形,包括实心图形和空心的图形; (3)可以对线条的颜色和粗细进行设置,也可以对填充图形的颜色进行设置和更改。 1.3 课程设计主要知识点 (1)框架类DrawGraphic继承了Swing类库中JFrame,并且用到JButton,JLabel,JPanel,等Swing类库中的组件进行窗体设计; (2)选择一个文件,用到组件JFileChooser; (3)选择颜色,用到组件JColorChooser; (4)弹出标准对话框,用到组件JOptionPane; (5)在单击绘图按钮时,所触发的动作通过方法addActionListener和ActionListener接口的actionPerformed方法共同实现; (6)MouseAdapter和MouseMotionAdapter用来完成鼠标各种事件的相应操作,包括单击、移动、拖拽等; (7)在界面设计的时候结合BorderLayout和GridLayout两种布局格式; (8)在添加监听器的时候有用到内部匿名类和内部类,所以要熟悉它们的构造方法和使用方法,从中体会持有对方引用的这一设计思想。 (9)在图形绘制的时候,用到Graphics类,其揭示了所有图形系统几乎都采用的一种机制,就是如何在窗口上画出一些图形来,当窗口构造出来的时候里面有一支画笔,即Graphics的一个对象,当窗口调用paint方法的时候,系统会把画笔自动传递给它,拿到画笔,重写paint方法就实现了在窗口上绘制基本图形。

JAVA设计绘图软件(附源代码)

目录 第一章选题简介 (3) 第二章需求分析 (4) 1.系统要实现的目标分析 (4) 2.对输入输出数据及流程的分析 (4) 3.开发环境及运行环境分析 (5) 第三章系统设计 (6) 1. 系统功能模块设计 (6) 2. 类设计 (7) 3. 界面设计 (8) 第四章测试 (10) 1.测试用例及结果 (10) 2.程序功能的评价 (11) 第五章总结 (12) 1.遇到的问题及解决的方法 (12) 2.开发体会及自评成绩 (12) 参考文献 (13)

第一章选题简介 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。 本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能利用它实现用三种类型的线条在画板上任意绘画、书写的功能,该画图程序还需具有橡皮擦功能以及清空整个画面的功能。

第二章需求分析 1.系统要实现的目标分析 ●这个画图程序,最基本的功能是,作为一个画笔,能利用它实现用三种类型 的线条在画板上任意绘画、书写的功能; ●这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除画板上的 图案; ●这个画图程序,还应该具备能够清除整个画板已绘制图画的功能。 2.对输入输出数据及流程的分析

java画图课程设计正式版

2013-2014学年第二学期学号1208020126 《高级语言程序设计》 课程设计报告 题目:画图应用程序 专业:网络工程 班级:2012级1班 姓名:孙亦东 指导教师:齐敏菊 成绩: 计算机与信息工程系 年月日

目录 1设计内容及要求 (2) 1.1设计内容 (2) 1.2设计任务及具体要求 (2) 2 概要设计........................................... .. (2) 3设计过程或程序代码 (2) 3.1 程序实现流程 (2) 3.2 程序算法设计 (3) 3.3 程序重点核心代码简介 (3) 3.4 程序按钮功能核心代码列表 (4) 3.5 程序运行界面截图 (5) 4 设计结果与分析 (8) 5 小结 (8) 参考文献 (9) 附:源程序 (9)

1 设计内容及要求 1.1设计内容 学习了《Java面向对象编程》的课程,为了更进一步的提高我们对Java的深入学习,进行了课程设计,我所选择课程设计是利用Java的GUI实现画图应用程度。其目的是通过本课程设计使我们能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。 (1)程序的功能应具备 1)利用Java设计一个画图应用程序; 2)可绘制直线、曲线、椭圆、矩形; 3)可改变线条颜色; 4)可完成图形文件的保存、打开功能。 1.2设计任务及具体要求 主要利用java语言设计开发一个小型的画图应用程序,至少具有如下功能:可以进行绘画,有颜色的选择、可以绘制直线曲线椭圆,矩形、可以保存。操作界面要符合用户的一般习惯,图形或文本界面都可以。 要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力。 2 概要设计 画图应用程序功能介绍 画图应用程序其实质也就是一个简单的画图板。画图板的应用简单灵巧,其占用资源少、操作简单;可以实现一些简单的画图应用操作。其功能较少但是可以为用户的小型图形应用工作带来了很多便利。能实现简单的作图如:画直线、曲线、椭圆、矩形等;也可以实现图像保存、打开、选择颜色等功能。

JAVA绘图基础知识

设置颜色与画笔 创建Color对象的常用构造方法: 1.使用十六进制整数指定红,绿。蓝三原色 Public Color(int rgb) 参数说明:rgb为6位十六进制整数,前两位表示红色,中间两位表示绿色,后两位表示蓝色。范围都是00-FF 2使用十进制整数分别指定红,绿,蓝; Public Color(int r ,int g,int b) 参数说明:r表示红色,g表示绿色,b表示蓝色。范围都是0-255 常用Color常量表 常量名颜色值 Color BLACK 黑色 Color BLUE 蓝色 Color CYAN 青色 Color DARK_GARY 深灰色 Color GRAY 灰色 Color GREEN 绿色 Color LIGHT_GRAY 浅灰色 Color MAGENTA 洋红色 Color ORANGE 橘黄色 Color PINK 粉红色 Color RED 红色 Color WHITE 白色 Color YELLOW 黄色 绘图类可以使用setColor()方法设置当前颜色 V oid setColor(Color c) 参数说明:c是一个颜色对象 调用setStroke()方法设置笔画的属性如改变线条的粗细,使用实线还是虚线定义线段端点的形状 V oid setStroke(Stroke s) 参数说明:s是stroke接口的实现类 BasiStroke类实现了Stroke接口用于绘制图形的轮廓 Public BasicStroke(float width,int cap, int join, float miterlimit, float[] dash, float dash_phase) 参数说明: Width BasicStroke 的宽度。此宽度必须大于等于0.0f。 Cap BasicStroke 端点的装饰。Cap参数可以使用CAP_BUTT CAP_ROUND 和CAP_SQUARE常量 Join 应用在路径线段交汇处的装饰join可以使用JOIN_BEVEL,JOIN_MITER和JOIN_ROUND Miterlimit 斜接触的剪切限制miterlimit必须大于或等于1.0f dash 表示虚线模式的数组

JAVA画图工具课程设计

南昌航空大学软件1学院 课程设计 画图工具程序设计系统 班级:092013 学号:09201319 姓名:许谱龙 指导老师: 苏曦 提交日期:2011-07-08 1

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。本报告中介绍了用JAVA语言实现画笔系统的全部过程。 本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。 本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能够实现画笔、画箭头、画直线、画圆形、画椭圆、画矩形、画多边形、书写文字修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能以及清空整个画面的功能 关键词:画图工具,JA V A

目录 摘要 (2) 目录 (3) 1.绪论 (4) 2. 开发环境介绍 (5) 3.需求分析 (6) 3.1总体目标 (6) 3.2要实现的功能 (7) 4.概要设计 (8) 4.1设计准备 (8) 4.2需要用到的类 (8) 5.详细设计 (9) 5.5类的设计 (9) 5.2类的方法设计 (9) 6.测试数据及运行结果 (11) 7.总结 (15) 8.参考文献 (15) 9.源程序 (15)

JAVA绘图实验报告

南京工程学院 实验报告 课程名称 java基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名无 实验时间 2012年11月 实验地点 实验成绩评定 指导教师签字年月日 一、实验目的和要求 1.目的:掌握java awt及swing组件的使用方法,包括窗口、框架、对话框、布局方式、 面板、文本编辑器、按钮、组合框等,合理利用委托事件处理模型,掌握不同组件,不同事 件的事件处理方法,设计出能够响应事件的java图形用户界面。 2.要求:设计图形用户界面,事件处理,异常处理并弹出对话框,提示重新输入信息。 二、实验题目 验证哥德巴赫猜想,添加图形用户界面 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 1.添加图形用户界面 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class gdbh extends frame implements actionlistener //窗口框 架响应单击事件,利用awt组件设计框架 { private button button; //按钮 private textfield text1; //文本行 private textarea text2; //文本区 public gdbh() { super(验证哥德巴赫猜想); //设置框架窗口标题 this.setbounds(450, 200, 350, 400); //设置框架的位置和尺寸 this.setresizable(false); // 设置框架大小不可改变 this.setbackground(color.lightgray); // 设置窗口背景颜色 this.setlayout(new flowlayout()); // 默认窗口流布局中对齐 this.add(new label(输入一个整数)); text1=new textfield(,20); this.add(text1); button=new button(验证哥德巴赫猜想); this.add(button); button.addactionlistener(this); //为按钮注册单击事件监听器,委托当前对 象处理事件

Java实现简单的绘图软件

Java实现简单的绘图软件

项目效果图: 项目源代码: import java.awt.*; import java.awt.event.*; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; import

javax.swing.filechooser.FileNameExtensionFilte r; /* author: 蒋冰*/ public class ImageDraw { private int typeFlag = 1; private int endFlag = 1; private int strokeTemp = 1; private Color color = Color.black; private BasicStroke stroke = new BasicStroke(); private float pre_x = 0; private float pre_y = 0; private float start_x = 0; private float start_y = 0; private float start_X = 0; private float start_Y = 0; private float end_x = 0; private float end_y = 0; private float width = 0; private float height = 0; private final int AREA_WIDTH = 700;

超棒的JAVA课程设计(画图工具)

Java与面向对象的程序设计 课程设计报告课程名称Java与面向对象的程序设计 实验学期 2011 年至 2012 年第二学期 所在学院理学院年级10专业班级信息与计算科学 学生姓名吴亿鑫学号 201030760232 自评成绩 95教师评成绩 学生姓名王灿学号 201030760224 自评成绩 95 教师评成绩 指导教师梁茹冰

《Java与面向对象的程序设计》课程设计报告

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。本报告中介绍了用JAVA语言实现画笔系统的全部过程。 本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。 本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能够实现画笔、画箭头、画直线、画圆形、画椭圆、画矩形、画多边形、书写文字修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能以及清空整个画面的功能 关键词:画图工具,JAVA

java画图程序-JAVA毕业设计论文

repaint(); } Paint方法描述了组件的绘制方法,通过覆盖该方法,可绘制各种需要的图形。在本程序中,通过一个swith-case结构来设置绘制图形的类型。Shape参数来自于工具栏,通过drawShape方法传入,shape 为0、1、2时画线、画圆、画矩形,它们分别通过Graphics类的drawLine、drawOval、drawRect方法完成。这部分的主要代码如下: switch (shape){ case 0: g.drawLine(point[0].x,point[0].y,point[1].x,point[1].y); break; case 1: int width=point[1].x-point[0].x; int height=point[1].y-point[0].y; g.drawOval(point[0].x,point[0].y,width,height); break; case 2: width=point[1].x-point[0].x; height=point[1].y-point[0].y; g.drawRect(point[0].x,point[0].y,width,height); break; }

2.演示程序 在用户界面上方设置了一个工具栏,包含3个按钮,这3个按钮组成按钮组,某时刻只能一个按钮被有选中。 在按钮的事件处理中,调用ActionEvent类的getSource方法得到事件源,将它与3个按钮进行比较,可得到事件来自于哪个按钮,并将这个参数通过PainterPanel类的drawShape方法传递到PainterPanel 实例中,这样在发生鼠标拖拽时,就能根据shape的值来确定应该绘制哪种图形。主要代码如下: for (int i=0;i

javaApplet编写的简单画图程序

javaApplet文件 import java.awt.*; import java.applet.*; public class Ycc5 extends Applet { Font f=new Font("华文新魏",Font.BOLD,18); public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(200,100,100,100); g.drawOval(200,100,100,100);

g.setColor(Color.black); g.drawLine(170,80,200,110); g.drawLine(250,50,250,90); g.drawLine(340,80,300,110); g.drawLine(150,150,190,150); g.drawLine(170,210,200,190); g.drawLine(250,240,250,210); g.drawLine(340,210,300,190); g.drawLine(310,150,350,150); g.setColor(new Color(62,167,252)); int[]x={550,700,750,500,550}; int[]y={350,350,400,400,350}; g.drawPolygon(x,y,5); g.fillPolygon(x,y,5); g.drawRect(510,400,230,180); g.setColor(new Color(44,252,85)); g.drawRect(650,420,60,70); g.fillRect(650,420,60,70); g.setColor(Color.black); g.drawLine(650,455,710,455); g.drawLine(680,420,680,490); g.drawRect(560,300,20,80); g.setColor(Color.yellow); g.drawRect(560,500,50,79); g.fillRect(560,500,50,79); g.setColor(Color.blue);

用java编写画图程序

Java中的graphics类提供了画布,可以在graphic面画出各种形状,包括图片,各种线条,字符串,各种图像。下面这个程序用java编写一个程序用来画图,类似于ppt中的画笔功能。 v

import javax.swing.*;

import java.awt.*; import java.awt.event.*; public class drawtest1 { public static void main(String args[]){ draw d=new draw(); // d.drawline(); } } class draw extends JFrame implements MouseListener,MouseMotionListener,ActionListener { Graphics g; Color color=Color.green ; Color color1=Color.gray ; int startx,starty,endx,endy; JPanel p1,p2; JButton []btns=new JButton[4]; String title[]={"设置前景色","设置背景色","设置画笔颜色","清除画布"}; public draw(){ super("画图"); this.show(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); setSize(700,600); setLayout(null); p1=new JPanel(); p2=new JPanel(); for(int i=0;i<4;i++){ btns[i]=new JButton(title[i]); btns[i].addActionListener(this); add(btns[i]); } p1.setBorder(BorderFactory.createTitledBorder("设置颜色")); p1.setBackground(Color.white ); p1.setBounds(30,10,140,240); btns[0].setBounds(50,40,100,30); btns[1].setBounds(50,90,100,30); btns[2].setBounds(50,140,100,30); btns[3].setBounds(50,190,100,30); add(p1); g=this.getGraphics(); g.setClip(180,50,500,500); addMouseListener(this); addMouseMotionListener(this);

相关主题
相关文档
最新文档