Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 460|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-29 12:18:42 | 显示全部楼层 |阅读模式

    /**

     *@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本身。

                 

           }

     

    }

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-4 10:42 , Processed in 0.061919 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表