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

/*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);}
}

  

轉載于:https://www.cnblogs.com/hujunzheng/p/3872786.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531869.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531869.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531869.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java office文件加水印_文檔預覽加水印——或可一用的防泄密方式

給文件加水印是常見的一種宣示版權的方式。像Office、WPS都自帶加水印功能,能夠給文檔加上"保密"、"嚴禁復制"這樣的水印。在多可系統中,也有這么一個添加水印的功能。啟用該功能后,在使用HTML5預覽時,多可系…

android 獲取apk資源,android-apk-parser

APK解析庫用于讀取/解析 packageName。versionName。versionCode信息的簡單類,以及已經編譯的androidsdk文件中的更多內容。通過解壓 AndroidManifest.xml 文件并解碼編譯好的XML二進制文件來收集這里信息,就可以實現。我一直在用它來實現各種android工件…

apache license 2.0如何使用防止法律糾紛_go語言使用Swaggo詳細教程

相信很多程序猿和我一樣不喜歡寫API文檔。寫代碼多舒服,寫文檔不僅要花費大量的時間,有時候還不能做到面面具全。但API文檔是必不可少的,相信其重要性就不用我說了,一份含糊的文檔甚至能讓前后端人員打起來。 而今天這篇博客介紹的…

靜態代碼塊,構造代碼塊,局部代碼塊演示

public class Test{static int num;static int numObj;//記錄有多少個對象產生!static{//靜態代碼塊, 是用來給類進行初始化的!//num 10;num;num *12;//沒有進入靜態代碼塊之前,num的初始化值是0System.out.println(num);//main(…

android執行main函數,AndroidStudio執行main方法報錯

問題:有時在開發中想直接寫一個java文件來測試一些東西,但是AndroidStudio執行的時候會報錯。代碼信息:public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}報錯信息12:04:41:…

模擬java.util.Collection一些簡單的用法

/* 需求:模擬java.util.Collection一些簡單的用法!注意:java虛擬機中并沒有泛型類型的對象。泛型是通過編譯器執行一個被稱為類型擦除的前段轉換來實現的。 1)用泛型的原生類型替代泛型。 原生類型是泛型中去掉尖括號及其中的類型…

hive 導出json格式 文件_Hive 系列 之 基本操作合集

下面是本課程概覽:(1)hive系列之簡介,安裝,beeline和hiveserver2(2)hive系列之基本操作(3)hive系列之udf(4)hive系列之二級分區和動態分區&#x…

android開發自定義view倍絲曲線,從0到1Android自定義View(四)貝塞爾曲線

原標題:從0到1Android自定義View(四)貝塞爾曲線2017年安卓巴士全球開發者論壇-上海站作者本文由兩點水投稿,博客地址:http://www.apkbus.com/myspaceblog-911082.html前言扯來扯去,前面三篇自定義 View 文章,終于扯完了…

如何保證對象的唯一性

/* 如何保證對象的唯一性:1.不允許其他程序用new來創建該類對象。2.在該類創建一個本類實例。3.對外提供一個方法讓其他程序可以獲取該對象的引用。 */ public class Test{public static void main(String[] args){//Subject sub Subject.oSub;//這種方法不可控&am…

ios kvo 要引入_騰訊社招iOS面試記錄

畢業好幾年了,上周發送了簡歷給騰訊,參加了騰訊面試。具體部門這邊就不說了。這次面試還是收獲到了很多。一面電話面試:面試官主要是針對iOS相關的基礎問題。先簡單自我介紹一下自己對mrc和arc的理解談談對自動釋放池的理解自動釋放池在mrc和…

動態設置html字號,動態設置html的font-size值 (適配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展現頁面的最小寬度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 設計圖尺寸寬 / 100( 設計圖的rem 100 )rem roo…

一個小例子對多態簡單的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛筆!");}}class Child extends Parent{int age;String name;//這里只說為了說明一個問題&#xff0c;其實完全…

運行shell腳本時怎么知道jdk路徑_Shell寫腳本關于ssh執行jar包,需要刷新JDK路徑的問題...

比如腳本中下面這一段ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port$SERVER_PORT >/dev/null 2>&1 &"免密登錄linux服務器&#xff0c;執行jar包&#xff0c;通過ssh執行java程序&#xff0c;涉及到一個找不到JDK路徑的問題&#xff0c;…

html 中加號的表示方法,CSS的+(加號)選擇器怎么用

在CSS中“”符號選擇器用于選擇緊跟在指定元素之后但不在特定元素內部的元素。下面本篇文章就來具體介紹一下&#xff0c;希望對大家有所幫助。“”符號選擇器在CSS中“”符號選擇器被稱為相鄰兄弟選擇器&#xff0c;用于選取在同一父元素下的&#xff0c;緊跟指定元素之后的另…

poj 1724ROADS(bfs和dfs做法)

1 /*2 dfs比較好想&#xff0c;就是測試數據的問題&#xff0c;導致在遍歷邊的時候要倒著遍歷才過&#xff01;3 */4 #include<iostream> 5 #include<cstdio>6 #include<cstring>7 #include<vector>8 #include<algorithm>9 #define Max 0x3f3f3f…

華為新系統 鴻蒙,旗艦CPU+鴻蒙OS!華為Mate家族重磅新品來襲

我們常說安卓平板的生態跟蘋果iPad有很大差距&#xff0c;不論是應用質量還是原生系統支持&#xff0c;蘋果都做的更好一些。可能也是因為這個原因&#xff0c;因此安卓平板&#xff0c;尤其是旗艦級別的平板至今除了三星之外&#xff0c;也就只有華為在做。作為安卓陣營兩大廠…

mysql中用來取余數的函數是_MySQL常用函數-單行處理函數-字符串處理函數(更新中...)...

本篇文章用到的數據庫表/* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.23-log : Database - myemployees ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUN…

HDU 1024Max Sum Plus Plus(最大m字段和)

/* 動態轉移方程&#xff1a;dp[i][j]max(dp[i-1]a[i], max(dp[t][j-1])a[i]) (j-1<t<i) 表示的是前i個數j個字段和的最大值是多少&#xff01; */ 1 #include<iostream> 2 #include<cstdio>3 #include<cstring>4 #define N 10000 5 using nam…

html盒子模型頁面居中,【靜態頁面架構】CSS之盒子模型

CSS架構盒子模型&#xff1b;以內容區(顯示文本和圖像)內邊距(內容區至邊距的距離)邊距(內容區的邊界)外邊距(元素的邊框之間的距離)1.邊距&#xff1b;border屬性&#xff1b;簡寫屬性用來設置邊距的上(top)右(right)下(bottom)左(left)。寬度&#xff0c;顏色和樣式div{width…

最強動畫制作人書包_聲優訪談丨戀與制作人動畫中配聲優訪談——夏磊

親愛的制作人們&#xff1a;距離戀與制作人動畫上線還有6天&#xff01;今天的中配聲優訪談嘉賓是在動畫中為許墨獻聲的夏磊老師~固定布局 工具條上設置固定寬高背景可以設置被包含可以完美對齊背景圖和文字以及制作自…