/**

*@author blovedr

* 功能: java绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法

* 日期: 2018年4月28日     16:20

* 注释: 学习java的点点记录, 欢迎各位大神批评指导与交流。

*/

package com.test1;

import javax.swing.*;

import java.awt.*;

public class Demo_1 extends JFrame{

MyPanel mp = null;  //自注: 定义MyPanel

public static void main(String[] args) {

// TODO Auto-generated method stub

Demo_1 demo_1 = new Demo_1();

}

public Demo_1()

{

mp = new MyPanel();  //自注: 创建一个MyPanel类的对象mp

this.add(mp);  //自注: 将mp加入到this(JFrame)里面去

this.setSize(400, 300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //自注: 为了防止内存泄漏     设置窗口关闭按钮的默认操作(点击关闭时退出进程)

this.setVisible(true);  //自注: 设置窗体是可见的

}

}

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

class MyPanel extends JPanel

{

//覆盖JPanel 的paint方法

//Graphics 是绘图的重要类, 你可以把它理解成一只画笔

public void paint(Graphics g)

{

//1. 调用父类函数完成初始化(任务)

//这句话, 不能少

super.paint(g);

System.out.println("paint被调用");

//先画出一个圆

//g.drawOval(10, 10, 30, 30);

//画出直线

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

//画出矩形边框

//g.drawRect(10, 10, 40, 60);  //自注: g.drawRect(x, y, width, height); ---x和y代表矩形的左上角坐标

//填充矩形

//设置颜色

//           g.setColor(Color.blue);

//           g.fillRect(10, 10, 40, 60);

//           g.setColor(Color.red);

//           g.fillRect(70, 70, 40, 60);

//在面板上画出图片---问题

//Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/hua.jpg"));  //error

//自注:Toolkit 是个类, 它里面有个静态方法叫 getDefaultToolkit() (得到它工具的集),  然后它有个getImage

//     Panel.class.getResource() ---用Panel这个类里面的getResource() 方法把这个图片加载到这个对象m里面去了。

//解决方法: Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/hua.jpg"));---将Panel.class.getResource("/hua.jpg")"替换成图片的路径,               //                    如下面的方法1_示例, 可以在面板上画出一张或多张图片。

//在面板上画出一张图片问题解决方法1_示例1---三个花属于不同路径(hua,hua2,hua3分别属于不同文件夹下的单独一个图片)

//Image im = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua\\hua.jpg");  //正确   2018.4.28  11:29

//在面板上画出一张图片问题解决方法1_示例2---hua2和hua属于不同路径

Image im2 = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua2\\hua2.jpg");  //正确   2018.4.28  15:18

//在面板上画出一张图片问题解决方法1_示例3---hua3和(hua与hua2)属于不同路径

//Image im3 = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua3\\hua3.jpg");  //正确   2018.4.28  15:29

//在面板上画出一张图片问题解决方法2_示例---三个花属于同一个文件夹(hua,hua2,hua3分别属于相同同文件夹下的单独一个图片)

//Image im = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua\\hua.jpg");

//Image im2 = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua\\hua2.jpg");  //error 自注: 如果三个花属于同一个文件, 程序在这个程序中单独无法正常显示图片 。

//Image im3 = Toolkit.getDefaultToolkit().getImage("D:\\picture\\hua\\hua3.jpg");

//显示

//g.drawImage(im, 90, 90, 100, 50, this);  //示例1   //正确   2018.4.28  11:29

g.drawImage(im2, 90, 90, 100, 50, this);  //示例2   //正确   2018.4.28  15:18

//g.drawImage(im3, 90, 90, 100, 50, this);  //示例3  //正确   2018.4.28  15:29

//自注: g.drawImage(im, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, observer)

//     dx1, dy1表示你画的图片的左上角,  dx2, dy2表示你用的图片要画多宽多高(dx2, dy2 ---宽, 高),   this代表JPanel本身。

}

}

java绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法的更多相关文章

  1. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】

    转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录 ...

  2. [Java]在窗口界面上画出硬盘中图片文件

    利用类javax.swing.JPanel来在窗口界面上画图.图片文件通过javax.imageio.ImageIO类来获取. import java.awt.Graphics; import jav ...

  3. Java绘图技术基础

    public class Demo1 extends JFrame{ MyPanel mp=null; public static void main(String[] args){ Demo1 de ...

  4. java基础 绘图技术.坦克大战 之java绘图坐标体系(一)

    坐标体系介绍 下图说明了java坐标体系.坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位.在java的坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素:第二个 ...

  5. JAVA学习Swing章节JPanel和JScrollPane面板的简单学习

    package com.swing; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton ...

  6. 分享在winform下实现左右布局多窗口界面

    在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口 ...

  7. JAVA监听器原理

    http://blog.csdn.net/longyulu/article/details/25054697 JAVA监听器原理 标签: 监听器 2014-05-05 15:40 9070人阅读 评论 ...

  8. Java跨平台原理

    此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...

  9. 【转】Java跨平台原理

    原文地址:http://www.cnblogs.com/gw811/archive/2012/09/09/2677386.html 1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么 ...

随机推荐

  1. python 正则详解

    正则表达式概述 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的 ...

  2. CMDB资产采集

    Agent(方式) 1:服务器每台都需要安装Agent 达到采集速度快,简单:造成性能损耗 获取每台服务器的资产并有返回值:v=subprocess.getoutput('dir')或者ipconfi ...

  3. POJ-3268 Silver Cow Party---正向+反向Dijkstra

    题目链接: https://vjudge.net/problem/POJ-3268 题目大意: 有编号为1-N的牛,它们之间存在一些单向的路径.给定一头牛的编号X,其他牛要去拜访它并且拜访完之后要返回 ...

  4. 一 Unicode和UTF-8的异同

    下面就是我的笔记,主要用来整理自己的思路.但是,我尽量试图写得通俗易懂,希望能对其他朋友有用.毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识.1. ASCII码我们 ...

  5. 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!

    在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...

  6. 0417 jQuery基础知识

    jQuery基础知识 jQuery需要引入一个js文件,并且这个文件在所有js代码之前(包括引入的其他js文件) 基础操作(对比js): 1.找标签: js:document.getElement.. ...

  7. [LeetCode] Toeplitz Matrix 托普利兹矩阵

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  8. [LeetCode] Number of Distinct Islands II 不同岛屿的个数之二

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  9. css中单位px,em,rem和vh/vw的理解

    >px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认 ...

  10. 运维技巧-Nginx日志格式

    1.说一说 当你安装完nginx,输出的格式是比较乱的,这样我们就需要自己去定义一下,自己看着舒服的格式. 2.Nginx日志字段 $remote_addr 记录客户端IP,但她的值不是客户端提供的, ...