java中paint方法和paintComponent方法的不同
2023-09-14 08:57:54 时间
/* 1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法 2.由JComponent.java源代码中可以看见其中的paint()方法中调用paintComponent, paintChildren, paintBorder等方法; 所以该类中的paint方法会影响子组件的绘制, 而paintComponent方法只会影响该组件本身 3.paint方法 和 paintComponent方法都是对一个组件进行渲染的(组件创建并显示之后),并不是产生和显示该组件的! 4.swing 组件和 awt组件 paint方法的不同:awt组件的paint方法有自动刷新背景颜色的功能, 而swing组件一定要调用super.paint() import java.awt.*; import java.awt.event.*; import javax.swing.*; public class BkGnd extends Frame{ public BkGnd(){ setTitle("更换背景!"); setSize(new Dimension(600, 600)); setLayout(new FlowLayout()); myPanelOne panel = new myPanelOne(); panel.setBackground(Color.yellow); panel.setPreferredSize(new Dimension(500, 500)); myPanelTwo pl = new myPanelTwo(); pl.setPreferredSize(new Dimension(400, 400)); pl.setBackground(Color.blue); panel.add(pl); add(panel); addWindowListener(new MyClosingListener()); public static void main(String args[]){ BkGnd myFrame = new BkGnd(); myFrame.setVisible(true); //第一种情况: 如果没有super.paint(g);则该面板上的组件将不能正常显示 //如果加上super.paint(g);那么首先通过该方法将该面板上的组件显示出来,然后在执行super.paint(g);下面的绘图语句。会导致将该面板上的组件覆盖 //父类的paint方法来负责调用paintComponent, paintChildren, paintBorder, update方法 class myPanelOne extends JPanel{ public void paint(Graphics g){ super.paint(g); g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 400, 400, this); class myPanelTwo extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 200, 200, this); //第二种就可以的到正常预想的结果 class myPanelOne extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g);//用于绘制自身面板的背景 g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 400, 400, this); class myPanelTwo extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 200, 200, this); //重写Component类中的paint()方法的子类,super.paint(g) 不会影响其子组件。 //第三种的效果等同于第二种的效果(正常的预想的结果) class myPanelOne extends Panel{ public void paint(Graphics g){ //super.paint(g);//加和不加都一样 g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 400, 400, this); class myPanelTwo extends Panel{ public void paint(Graphics g){ g.drawImage(new ImageIcon("zjy1.jpg").getImage(), 0, 0, 200, 200, this); class MyClosingListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); }
Java String 的 常量池 和 intern 方法 简析 Java String 的 常量池 和 intern 方法 简析字符串常量池和 intern 方法 先举个例子,我们创建 10000 个相同的 String,并且不使用常量池 String[] list = new String[10000]; for (int i = 0; i 10000; i++) { list[i] = new String(new char[]{ a , b , c 结果是:每个 String 都用新开的对象,占用大量内存
现在我们这样创建,增加一个 map ,key 和 value 内容一样,每次取的时候,先检查一下 map 里面有没
Java的学习笔记(04)方法 Java方法01 方法是语句的集合,执行一个功能。方法再程序中被创建,再其他地方被引用 一个方法只做一个功能 方法的命名规则:首字母小写,驼峰规则。 package method; public class Demo01 { //mian 方法 public static void main(String[] args) { int sum = add(1,2); //调用一个方法:加法 // 实际参数:实际调用传递给
【Java编程进阶】方法初识 方法是组合在一起来执行操作语句的集合`,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。
Java练习题——抽象类、方法以及接口 由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可
Java练习题——方法(基础版) 求数组内最大值以及定义一个随机数组在之前已经介绍过了,只需要将这部分的代码打包放在一个方法内,并在main方法中调用即可
相关文章
- Java获取当前类名的两种方法
- Java实现 LeetCode 204 计数质数
- java实现第六届蓝桥杯九数分三组
- Java实现 蓝桥杯 历届试题幸运数
- Java中BigDecimal类的常用方法
- Java实现 蓝桥杯VIP 算法提高 分数统计
- Java实现蓝桥杯 算法提高 八皇后 改
- java的IO操作:System类对IO的支持。
- 【Java】java使用反射访问对象方法和成员变量
- 如何将 普通代码变成 java lamband表达式
- Atitit smp prj 项目简化方法总结 目录 第一章 俩大原则准则1 第一节 极简主义原则 + 自由主义原则1 第二章 简单化架构1 第一节 简单语言php vs java1 第二
- Atitit。Js调用后台语言 java c# php swing android swt的方法大总结
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
- Atitit.实现继承的原理and方法java javascript .net c# php ...
- paip.截取字符串byLastDot方法总结uapi python java php c# 总结
- 关于java的getResource方法
- 【泛型】Java中的泛型,泛型类,泛型接口,泛型方法,泛型擦除
- 从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
- 【java】Java经典面试题整理(附答案)
- java死锁(Java-level deadlock)
- Java如何获取IP属地 ip2region failed to create searcher with x:java.io.FileNotFoundException:( 系统找不到指定的路径)
- java中的transient 详细总结Java中transient关键字 对象写出流ObjectOutputStream 对象写入流ObjectInputStream
- Java线程原理和5种同步方法
- Java泛型:泛型类、泛型接口和泛型方法
- (转载)Java 1.7的新特性
- JAVA操作Excel表格:方法二:POI的使用①:Excel实战之POI创建excel文件(低版本)
- 【java】java动态代理实现与原理详细分析
- Java webservice详解