Java繪圖技術(shù),swing畫圖工具,文字,圖片素材,注釋,個(gè)人理解,星空等【詩書畫唱】
使用繪圖技術(shù)繪制一個(gè)空心長(zhǎng)方形,要求長(zhǎng)度為400px,寬度為200px,邊框顏色為紅色

package swing;
import java.awt.*;
import javax.swing.*;
public class paint extends JFrame{
public static void main(String[] args) {
new paint();
}
//public class paint{}這個(gè)類的構(gòu)造方法:public paint(){}
public paint(){
//swing界面基本上要有:布局方式,大小,居中,釋放資源,顯示
this.setLayout(null);//:空布局?
this.setSize(520,520);
this.setLocationRelativeTo(null);
huaBi huaBiClass=new huaBi();
huaBiClass.setBounds(0,0,520,520);
this.add(huaBiClass);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class huaBi extends JPanel{
//使用畫筆工具Graphics的方法就是要用paint方法:
public void paint(Graphics g){
g.setColor(Color.red);
// setColor設(shè)置顏色要先設(shè)置在drawRect或fillRect等的前面,
// setColor:設(shè)置空心矩形(drawRect)的邊框的顏色
// 或?qū)嵭木匦危╢illRect)的填充的顏色
g.drawRect(13,14,400,200);
}
}


使用繪圖技術(shù)繪制三色國(guó)旗,長(zhǎng)度為400px,寬度為200px,顏色分別是紅黃藍(lán)三種顏色

package swing;
import java.awt.*;
import javax.swing.*;
public class guoQi extends JFrame{
public static void main(String[] args) {
new guoQi();
}
//public class paint{}這個(gè)類的構(gòu)造方法:public paint(){}
public guoQi(){
//swing界面基本上要有:1布局方式,2大小,3居中,4釋放資源,5顯示
// ————
this.setLayout(null);//:1布局方式(這里為空布局 )
// ————
this.setSize(520,520);
// :2大小
// ————
this.setLocationRelativeTo(null);
// :3居中
// ————
huaBiGongJv huaBiGongJvClass=new huaBiGongJv();
huaBiGongJvClass.setBounds(0,0,520,520);
this.add(huaBiGongJvClass);
// ————
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// :4釋放資源
// ————
this.setVisible(true);
//:5顯示
// ————
}
}
class huaBiGongJv extends JPanel{
//使用畫筆工具Graphics的方法就是要用paint方法:
public void paint(Graphics g){
// setColor設(shè)置顏色要先設(shè)置在drawRect或fillRect等的前面,
// setColor:設(shè)置空心矩形(drawRect)的邊框的顏色
// 或?qū)嵭木匦危╢illRect)的填充的顏色
g.setColor(Color.red);
g.fillRect(13,14,400/3,200);
g.setColor(Color.yellow);
g.fillRect(13+400/3,14,400/3,200);
g.setColor(Color.blue);
g.fillRect(13+800/3,14,400/3,200);
}
}


使用繪圖技術(shù)繪制自己的名字,字體為紅色,字體為微軟雅黑,大小為30px,加粗

package swing;
import java.awt.*;
import javax.swing.*;
public class font extends JFrame{
public static void main(String[] args) {
new font();
}
//public class paint{}這個(gè)類的構(gòu)造方法:public paint(){}
public font(){
//swing界面基本上要有:1布局方式,2大小,3居中,4釋放資源,5顯示
// ————
this.setLayout(null);//:1布局方式(這里為空布局 )
// ————
this.setSize(520,520);
// :2大小
// ————
this.setLocationRelativeTo(null);
// :3居中
// ————
huaBiFont huaBiGongJvClass=new huaBiFont();
huaBiGongJvClass.setBounds(0,0,520,520);
this.add(huaBiGongJvClass);
// ————
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// :4釋放資源
// ————
this.setVisible(true);
//:5顯示
// ————
}
}
class huaBiFont extends JPanel{
//使用畫筆工具Graphics的方法就是要用paint方法:
public void paint(Graphics g){
// setColor設(shè)置顏色要先設(shè)置在drawRect或fillRect等的前面,
// setColor:設(shè)置空心矩形(drawRect)的邊框的顏色
// 或?qū)嵭木匦危╢illRect)的填充的顏色
// ______
// 使用繪圖技術(shù)繪制自己的名字,
// 字體為紅色,字體為微軟雅黑,大小為30px,加粗:
//——————
//除了這個(gè)區(qū)域的部分根據(jù)不同用途,情況變等,其余部分基本不變
g.setColor(Color.red);
g.setFont(new Font("微軟雅黑",Font.BOLD,30));
g.drawString("詩書畫唱",100,100);
//——————
}
}




使用繪圖技術(shù)繪制一個(gè)180度的半圓,顏色為紅色

package swing;
import java.awt.*;
import javax.swing.*;
public class banYuan extends JFrame{
public static void main(String[] args) {
new banYuan();
}
//public class paint{}這個(gè)類的構(gòu)造方法:public paint(){}
public banYuan(){
//swing界面基本上要有:1布局方式,2大小,3居中,4釋放資源,5顯示
// ————
this.setLayout(null);//:1布局方式(這里為空布局 )
// ————
this.setSize(520,520);
// :2大小
// ————
this.setLocationRelativeTo(null);
// :3居中
// ————
huaBibanYuan huaBiGongJvClass=new huaBibanYuan();
huaBiGongJvClass.setBounds(0,0,520,520);
this.add(huaBiGongJvClass);
// ————
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// :4釋放資源
// ————
this.setVisible(true);
//:5顯示
// ————
}
}
class huaBibanYuan extends JPanel{
//使用畫筆工具Graphics的方法就是要用paint方法:
public void paint(Graphics g){
// setColor設(shè)置顏色要先設(shè)置在drawRect或fillRect等的前面,
// setColor:設(shè)置空心矩形(drawRect)的邊框的顏色
// 或?qū)嵭木匦危╢illRect)的填充的顏色
g.setColor(Color.red);
g.fillArc(100,100,150,150,0,180);
// :上半圓
// 自己總結(jié)的語法:fillArc(X軸方向位移,
// Y軸方向位移,X軸方向?qū)挾?Y軸方向高度,
// 正擺放后的扇形順時(shí)針旋轉(zhuǎn)的角度,扇形對(duì)應(yīng)的圓周角)
}
}


使用繪圖技術(shù)繪制一張圖片

package swing;
import java.awt.*;
import javax.swing.*;
public class Img extends JFrame{
public static void main(String[] args) {
new Img();
}
//public class paint{}這個(gè)類的構(gòu)造方法:public paint(){}
public Img(){
//swing界面基本上要有:1布局方式,2大小,3居中,4釋放資源,5顯示
// ————
this.setLayout(null);//:1布局方式(這里為空布局 )
// ————
this.setSize(520,520);
// :2大小
// ————
this.setLocationRelativeTo(null);
// :3居中
// ————
huaBiImg huaBiGongJvClass=new huaBiImg();
huaBiGongJvClass.setBounds(0,0,520,520);
this.add(huaBiGongJvClass);
// ————
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// :4釋放資源
// ————
this.setVisible(true);
//:5顯示
// ————
}
}
class huaBiImg extends JPanel{
//使用畫筆工具Graphics的方法就是要用paint方法:
public void paint(Graphics g){
//加載圖片
Image img=Toolkit.getDefaultToolkit().getImage("三連.jpg");
g.drawImage(img, 13,14,520,233,this);
}
}



星空?qǐng)D的效果:

package swing;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Random;
import javax.swing.*;
public class starClass extends JFrame{
public static void main(String[] args) {
new starClass();
}
public starClass(){
//5個(gè)基本屬性之三:
this.setLayout(null);
this.setSize(666,666);
this.setLocationRelativeTo(null);
// ————
// 啟動(dòng)線程部分:
huaTiClass huaTiClass=new huaTiClass();
Thread Thread=new Thread(huaTiClass);
Thread.start();
//————
// 創(chuàng)建畫圖工具的圖形部分:
huaTiClass.setBounds(0,0,666,666);
this.add(huaTiClass);
//————
//5個(gè)基本屬性之二:
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class huaTiClass extends JPanel implements Runnable{
public void paint(Graphics g){
Random RandomNum=new Random();
//設(shè)置畫筆的顏色為黑色,這里是設(shè)置矩形的填充顏色:
g.setColor(Color.black);
//畫個(gè)實(shí)心的矩形:
g.fillRect(0,0,666,666);
//繪制圖片人物:
Image Image=Toolkit.getDefaultToolkit()
.getImage("timg.gif");
g.drawImage(Image,100,250,200,250,this);
//————
//用“*”來代替星星,繪制星星:
g.setColor(Color.white);
for(int i=0;i<100;i++){
g.drawString("*",RandomNum.
nextInt(600),RandomNum.nextInt(200));
}
//————
//繪制一個(gè)月亮:
g.fillOval(400,50,120,80);
g.setColor(Color.black);
g.fillOval(389,50,80,80);
//————
//每隔一段時(shí)間就打印一個(gè)字:“一起去看流星雨”
//【思路:將文字轉(zhuǎn)為字符數(shù)組,for循環(huán)里每打印一個(gè)
//文字,休眠0.01秒】
char[] charArray="一起去看流星雨".toCharArray();
// (String類型的字符串).toCharArray:
//將字符串轉(zhuǎn)化為字符數(shù)組:
g.setColor(Color.white);
g.setFont(new Font("微軟雅黑",Font.BOLD,30));
for(int i=0;i<charArray.length;i++){
g.drawString(charArray[i]+"",666,233+(i*520));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//————
}
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
repaint();
// ————
// repaint
// vt. 再次(重新)油漆,再次(重新)畫;?
// 恢復(fù)…原來的色彩;
// n. 重新涂漆的東西;
// ————
// repaint()是重要概念,
// 它是在圖形線程后追加一段重繪操作,
// 是安全的!是系統(tǒng)真正調(diào)用的重繪!
// 所以如果你需要某個(gè)部件刷新一下界面,記得調(diào)用repaint(),
// 千萬不要直接調(diào)用paint()!
// Graphics是一個(gè)抽象類,
// 其實(shí)現(xiàn)大都是平臺(tái)相關(guān)的,
// 所以不容易自己創(chuàng)建一個(gè)graphics實(shí)例。
// 一般graphics的實(shí)例會(huì)由依照你所在的桌面環(huán)境給出。
// ————
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
