java绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法
/**
*@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绘图原理------在窗口界面(或面板上)画出一张或多张图片问题解决方法的更多相关文章
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】
转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录 ...
- [Java]在窗口界面上画出硬盘中图片文件
利用类javax.swing.JPanel来在窗口界面上画图.图片文件通过javax.imageio.ImageIO类来获取. import java.awt.Graphics; import jav ...
- Java绘图技术基础
public class Demo1 extends JFrame{ MyPanel mp=null; public static void main(String[] args){ Demo1 de ...
- java基础 绘图技术.坦克大战 之java绘图坐标体系(一)
坐标体系介绍 下图说明了java坐标体系.坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位.在java的坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素:第二个 ...
- JAVA学习Swing章节JPanel和JScrollPane面板的简单学习
package com.swing; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton ...
- 分享在winform下实现左右布局多窗口界面
在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform.WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口 ...
- JAVA监听器原理
http://blog.csdn.net/longyulu/article/details/25054697 JAVA监听器原理 标签: 监听器 2014-05-05 15:40 9070人阅读 评论 ...
- Java跨平台原理
此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...
- 【转】Java跨平台原理
原文地址:http://www.cnblogs.com/gw811/archive/2012/09/09/2677386.html 1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么 ...
随机推荐
- 路由测试-lee
//get 路由 Route::get('/', 'WelcomeController@index'); Route::get('home', 'HomeController@index'); //路 ...
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- FreeMarker的用法
freemark就是一个对静态页面上的标签进行动态解析.填充数据的一个框架. 语法(转:http://zhuyuehua.iteye.com/blog/1975251): 1. freemarker ...
- MyBatis(一):配置并使用
MyBatis具体是什么东东,这些在后边在研究吧,本文目的是为了记录如何使用MyBatis. 首先,需要下载MyBatis开发所需要文件. 通过github上可以找到MyBatis代码:https:/ ...
- mysql安装及常见问题
下载了MySQL的压缩包,开始配置的时候遇到一大堆问题,下面记录下,也希望对遇到同样问题的你有帮助 开始将压缩包解压到指定文件夹,然后建立一个txt文件命名为my.ini,写入下面的内容 [mysql ...
- 使用Vertx重构系统小结
背景 前几个月,使用Vertx重构了公司的一个子系统,该系统负责公司核心数据subscriber的采集.处理.存储和搜索.这里介绍下重构该系统时的一些关键点. 架构 重构前系统部署图: 重构前系统主要 ...
- Python面向对象——重写与Super
1本文的意义 如果给已经存在的类添加新的行为,采用继承方案 如果改变已经存在类的行为,采用重写方案 2图解继承.重写与Super 注:上面代码层层关联.super()可以用到任何方法里进行调用,本文只 ...
- javascript实现双向数据绑定
双向数据绑定已经是面试中经常被问到的点,需要对原理和实现都要有一定了解. 下面是实现双向绑定的两种方法: 属性劫持 脏数据检查 一.属性劫持 主要是通过Object对象的defineProperty方 ...
- [HNOI 2002]跳蚤
Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个 ...
- Codeforces 802L Send the Fool Further! (hard)
Description 题面 题目大意:求从根节点出发,每次随机走一个相邻的点,问走到任意一个叶子节点经过的路径长度的期望(走到就停止) Solution 树上高斯消元,复杂度是 \(O(n)\) 的 ...