N年不用java写图形界面,但想了想,在点击事件中给上边图形重绘的方法重新来一遍应该可行。代码如下:

package com.yimik.test.swing;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class BackgroundTest extends JFrame{

private static final long serialVersionUID = 1L;

private JButton b;

private JPanel p ;

public BackgroundTest() {

p = new MyPanel();

p.setBounds(0, 0, 500,200);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setSize(500, 500);

this.setVisible(true);

this.setLayout(null);

this.add(p);

b = new JButton("点击换背景");

b.setBounds(0, 300, 100, 30);

this.add(b);

b.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

super.mouseClicked(e);

ImageIcon image=new ImageIcon(getClass().getResource("/imgs/img2.jpg"));

image.setImage(image.getImage().getScaledInstance(p.getWidth(),p.getHeight(),Image.SCALE_FAST));

image.paintIcon(p, p.getGraphics(),0, 0);

}

});

}

public static void main(String[] args) {

new BackgroundTest();

}

}

class MyPanel extends JPanel{

private static final long serialVersionUID = 1L;

@Override

protected void paintComponent(Graphics g){//重写paintComponent方法以实现jPanel加背景

super.paintComponent(g);

ImageIcon image=new ImageIcon(getClass().getResource("/imgs/img1.jpg")); //获取图像

image.setImage(image.getImage().getScaledInstance(this.getWidth(),this.getHeight(),Image.SCALE_FAST)); //调整图像的分辨率以适应容器

image.paintIcon(this, g,0, 0);

}

}

java 重写paint_java笔记 重写paintComponent方法以实现jPanel加背景相关推荐

  1. java中paint方法和paintComponent方法的不同

    /*1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法2.由JComponent.java源代码 ...

  2. Java基础入门笔记-重写

    首先是HelloWorld.java package my;public class HelloWorld {public static void main(String[] args){ Stude ...

  3. Java核心类笔记(字符串方法、StringBuilder(Joiner)、包装、JavaBean、枚举、Math、随机数)

    String字符串注意点和常用方法 怎样理解字符串的不可变性? 在Java中,String是通过private final char[]实现的,没有任何修改char[]的方法,所以是不可变的. 在字符 ...

  4. java实现安全卡模块,一种Java卡防火墙漏洞的检测方法和装置的制造方法

    一种Java卡防火墙漏洞的检测方法和装置的制造方法 [技术领域] [0001]本发明涉及智能卡领域,尤其涉及智能卡领域中的一种Java卡防火墙漏洞的检测方法和装置. [背景技术] [0002]Java ...

  5. Java拾遗:001 - 重写 equals 和 hashCode 方法

    2019独角兽企业重金招聘Python工程师标准>>> 重写equals方法 在Java中Object类是一个具体类,但它设计的主要目的是为了扩展,所以它的所有非final方法,都被 ...

  6. 重写Java Object类中的equals()方法

    Java中的Object类中的equals方法 Object类的equals方法 重写Object类的equals()方法 Person类默认继承了Object类,所以可以使用Object类的equa ...

  7. java重写6,java重写equals()方法和hashCode()方法

    1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...

  8. java重写的代码_java tostring方法重写代码示例

    当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法 默认情况下 System.out.printl ...

  9. JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法

    在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address {privat ...

最新文章

  1. 活动报名 | “认知神经科学”助力人工智能突围的方法路径
  2. IccFileHandler和IccRecords
  3. angularjs 中的scope继承关系——(2)
  4. 自己做回CA 给别人发证
  5. SAP HANA简介
  6. 挨踢脱口秀精选集汇总
  7. 了解一下C++输入和输出的概念
  8. ci 地址去掉index.php,CI框架如何删除地址栏的 index.php
  9. 二叉树小球下落问题c语言,#C++初学记录(树和二叉树)
  10. Spring @AutoWired实现原理
  11. soundpool android,android – 如何获取Soundpool的持续时间
  12. 「总结」最全2万字长文解读7大方向人脸数据集v2.0版
  13. 华为防火墙安全区域介绍及配置
  14. dpi、ppi、apm是什么
  15. 【线性代数笔记】矩阵的特征值和特征向量在哪些变换过程中变化?
  16. 利用Exchange服务同步iOS和android中的联系人
  17. IOS微信浏览器input输入账号键盘闪烁
  18. ISTQB认证-关于ISTQB一些知识点总结
  19. wireshark源码分析二
  20. 2019年计算机网络管理员大赛,【重磅】信息工程学院代表队入围2019年中国高校计算机大赛网络技术挑战赛晋级赛...

热门文章

  1. ajax c 提交form,使用ajax提交form表单,包括ajax文件上传
  2. php 抓取https请求数据,PHP + curl 实现 http 或 https 抓取数据:
  3. c语言拟合线性直线误差最小,急~~~~~~!!!求解!用C语言编写最小二乘法求数据的拟合曲线~并做出图显示拟合效果!高分悬赏!...
  4. java md5加密32位小写_Java生成MD5的方法,简单封装并转为32位小写
  5. Python基础教程:内置类型之数值
  6. Python高阶函数用法
  7. java安全例外_java – 本地Applet安全例外
  8. mysql 自后向前截取函数_【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串...
  9. mysql语句的执行顺序_SQL语句完整的执行顺序(02)
  10. 我的2020电视机选购