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

news/2024/7/3 11:18:54

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

第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();
    }
}

http://www.niftyadmin.cn/n/4079379.html

相关文章

C++语言基础(8)-引用

(重要)使用引用的一些注意点: 1.引用不能绑定临时数据,也不能绑定任何无法获取内存地址的常量,表达式,或值,常引用除外。 第一种写法:(错误) int func_int(){int n 100;return n; }int main(){…

MySQL 的相关介绍

MySQL 的相关介绍 :在介绍MySQL之前先弄清楚两个概念:数据库:与DB相关的物理操作系统文件和其他形式文件的集合 实例:包括与MySQL相关的后台线程和共享内存区 在一般情况下一个实例仅仅对应于一个数据库的,像类似于高可用性集群的…

Linux编程之有限状态机FSM的理解与实现

有限状态机(finite state machine)简称FSM,表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用。FSM是一种逻辑单元内部的一种高效编程方法,在服务器编程中,服务器可…

摩拜获巨额融资,为何还被曝拖欠底层员工薪水?

当前的中国互联网圈子一直不缺劲爆话题,共享单车尤是风口浪尖。如果关注或是搜索共享单车相关关键词,满屏的利好消息顿时便会充斥整个屏幕,让人一眼看去其乐融融和谐无边的景象几乎直截了当的告诉读者:共享单车是太阳底下最灿烂的…

Codeforces Round #420 (Div. 2)

这一场PP说很简单,我就闲来无事敲一敲好了,反正也考完了(雾,不过只剩数据结构和cA. Okabe and Future Gadget Laboratorytime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outp…

java 二项式系数_Binomial Coefficient(二项式系数)

In mathematics, any of the positive integers that occurs as a coefficient in the binomial theorem is a binomial coefficient. Commonly, a binomial coefficient is indexed by a pair of integers n ≥ k ≥ 0 and is written {\displaystyle {\tbinom {n}{k}}.} {\di…

Centos7下安装Tomcat7

在这里我们采用下载tar.gz包来进行安装。 首先先到Apache Tomcat官网上下载Tomcat,这里我们使用Tomcat 7。 下载地址为: http://tomcat.apache.org/download-70.cgi 下载完成之后进行解压 # tar –zxvf apache-tomcat-7.0.78.tar.gz 然后,选择…

好人不长命 祸害遗千年

活到今天的人各种各样都有,也没有哪种人完全绝种了,世界之大,无奇不有,如果你有机会多见到一些人,就会发现大圣大贤和大奸大恶现在都还存在着生存的罪恶么,要看你怎么生存,也要看你怎么定义罪恶…