【136天】尚学堂高淇Java300集视频精华笔记(77-78)

我现在发现,学习进度一定不能停滞,哪怕视频看不懂,也必须继续按进度前进,问题可以慢慢来解决,切勿完美主义,先行动起来,拒绝拖延。

第77集:游戏项目1——加载窗口、画图形、编程中坐标基本知识

本集新学知识

  1. 窗口加载的常用方法

    1. setSize()

    2. setLocation()

    3. setVisible()

  2. 关闭窗口的常用方法

    //匿名内部类
    addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);//参数传负数表示异常结束,传0表示正常结束。
            }
        });
  3. 画笔类相关常用方法

    1. drawRect()

    2. drawLine()

    3. drawOval()

    4. drawString()

    5. fillRect()

    6. 画面使用完毕一定要“清洗”

      public void Paint(Graphics g){
          
          Color c = new Color();
          g.setColor(Color.red);
          g.drawRect(100,100,200,200)
          g.setColor(c);
      }
    7. 画笔类之所以写完方法就能运行,是因为callback的原因。

  4. 字体相关常用方法

    1. setFont()

package com.test077;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author wangtao
 * 游戏窗口类
 */
public class GameFrame extends Frame { //GUI编程:AWT,swing等 Java编写的桌面软件极少,这些工具不要花太多时间
    
    /**
     * 加载窗口类 
     */
    public void launchFrame(){ 
        setSize(500,500);
        setLocation(100,100);
        setVisible(true);
        
        //下面是一个匿名内部类
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);//参数传负数表示异常结束,传0表示正常结束。
            }
        });
    }

    //画笔类,这个地方用了回调
    @Override
    public void paint(Graphics g) {
        g.drawLine(100, 100, 200, 200);//画线
        g.drawRect(100, 100, 200, 200);//画矩形
        g.drawOval(100,100,200,200);//画矩形的内切圆
        
        Font f = new Font("宋体",Font.BOLD,100);
        g.setFont(f);//设置字体
        
        g.drawString("Hello World!",200,200);//字符串的左下角就是后面那个坐标
        g.fillRect(100, 100, 20, 20);//画填充矩形
        
        Color c = g.getColor();//先获取原画笔颜色
        g.setColor(Color.red);//设置新画笔颜色,
        g.fillOval(300, 300, 20, 20);//用新画笔填充
        g.setColor(c);
    }
    
    public static void main(String[] args){
        GameFrame gf = new GameFrame();
        gf.launchFrame();
    }
}

第78集:游戏项目2——图片的加载

本集新学知识

  1. 一个用于加载图片的工具类

package com.test077;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;

/**
 * @author wangtao
 *    加载图片用的工具类
 */
public class GameUtil {
    
    private GameUtil(){}//将构造方法私有,防止创建实例
    
    public static Image getImage(String path){
        URL u = GameUtil.class.getClassLoader().getResource(path);
        BufferedImage img = null;
        try {
            img = ImageIO.read(u);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return img;
    }
}
  1. 使用图片应该先加载,再后画进窗口。

    1. 加载:Image img = GameUtil.getImage("images/plane.jpeg");

    2. 画入窗口:g.drawImage(img,200,200,null);

package com.test077;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author wangtao
 * 游戏窗口类
 */
public class GameFrame extends Frame { //GUI编程:AWT,swing等 Java编写的桌面软件极少,这些工具不要花太多时间
    
    Image img = GameUtil.getImage("images/plane.jpeg");
    
    /**
     * 加载窗口类 
     */
    public void launchFrame(){ 
        setSize(500,500);
        setLocation(100,100);
        setVisible(true);
        
        //下面是一个匿名内部类
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);//参数传负数表示异常结束,传0表示正常结束。
            }
        });
    }
    
    //画笔类,这个地方用了回调
    @Override
    public void paint(Graphics g) {
        g.drawLine(100, 100, 200, 200);//画线
        g.drawRect(100, 100, 200, 200);//画矩形
        g.drawOval(100,100,200,200);//画矩形的内切圆
        
        Font f = new Font("宋体",Font.BOLD,100);
        g.setFont(f);//设置字体
        
        g.drawString("Hello World!",200,200);//字符串的左下角就是后面那个坐标
        g.fillRect(100, 100, 20, 20);//画填充矩形
        
        Color c = g.getColor();//先获取原画笔颜色
        g.setColor(Color.red);//设置新画笔颜色,
        g.fillOval(300, 300, 20, 20);//用新画笔填充
        g.setColor(c);
        
        g.drawImage(img,200,200,null);
        
    }

    public static void main(String[] args){
        GameFrame gf = new GameFrame();
        gf.launchFrame();
    }
}

你可能感兴趣的:(【136天】尚学堂高淇Java300集视频精华笔记(77-78))