java游戏开发杂谈 - 画布和画笔
在Eclipse里,编写如下两个类:
package game2;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
/**
* java游戏开发杂谈
* ---demo2:画布和画笔
*
* @author 台哥
* @date 2019-04-02
*/
public class GamePanel extends JPanel {
/** 屏幕的宽和高 */
private int width,height;
public GamePanel(int width, int height) {
this.width = width;
this.height = height;
this.setSize(width, height);
}
/**
* 覆盖paintComponent()方法
* 参数中的Graphics是画笔,使用它可以绘制出字符串、直线、矩形、圆、图片等等。
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);
//画绿色背景
g.setColor(new Color(0x839156));
g.fillRect(0, 0, width, height);
//画一行字
g.setColor(Color.pink);
g.drawString("我学java,我骄傲", 100, 80);
//再画一行字
g.setColor(Color.yellow);
g.drawString("游戏好玩,开发游戏更好玩", 300, 80);
//画一条线
g.setColor(Color.black);
g.drawLine(5, 120, 580, 120);
//画一个矩形(不填充内部)
g.setColor(Color.green);
g.drawRect(100, 160, 100, 60);
//画一个矩形(填充内部)
g.setColor(Color.blue);
g.fillRect(300, 160, 100, 60);
}
}
package game2;
import javax.swing.JFrame;
/**
* java游戏开发杂谈
* ---demo2:画布和画笔
*
* @author 台哥
* @date 2019-04-02
*/
public class GameFrame extends JFrame{
private int width = 600, height = 400;
public GameFrame() {
//设置窗体标题
this.setTitle("java游戏开发杂谈-台哥出品");
//创建一个画布
GamePanel panel = new GamePanel(width, height);
//把画布加入到窗体中
getContentPane().add(panel, "Center");
//设置窗体大小
this.setSize(width, height);
//设置能否调整窗体大小
this.setResizable(false);
//这句会使得在屏幕上居中显示
this.setLocationRelativeTo(null);
//当关闭窗体的时候退出程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
//把窗体显示出来
this.setVisible(true);
}
/**
* 主方法
*/
public static void main(String[] args) {
GameFrame frame = new GameFrame();
}
}
运行效果,如下图所示:

窗体JFrame,表示操作系统的一个窗口,可以想象成绘画用的画板。
画布JPanel, 用来放到JFrame中,可在上面作画,可以想象成绘画用的画纸。
画笔Graphics, 用来绘画,提供了一些最基础的绘制方法。比如drawRect绘制一个矩形,drawString绘制字符串。
台哥,一个老的忘记了年龄的程序员,忙里偷闲,瞎扯几篇java游戏开发杂谈,内容浅显,代码简陋。。。
技术精深的同行,一笑而过就好。刚刚入门的同学,感谢你的关注。

java游戏开发杂谈 - 画布和画笔的更多相关文章
- java游戏开发杂谈 - 实现游戏主菜单
经常玩游戏的同学,大家都知道,游戏都会有个主菜单,里面有多个菜单选项:开始游戏.游戏设置.关于游戏.退出游戏等等,这个菜单是怎么实现的呢. 有一定桌面软件开发基础的同学可能会想到,用JButton组件 ...
- java游戏开发杂谈 - 事件处理
大家都知道,游戏需要跟玩家交互,需要接收玩家的鼠标.键盘发出的命令,比如在地图上点击一下,人物就自动寻路走过去:键盘上按下某个键,就弹出一个背包界面. 这些逻辑是怎么处理的呢? 大家先不用深究太详细的 ...
- java游戏开发杂谈 - 游戏物体
现实生活中,有很多物体,每个物体的长相.行为都不同. 物体存在于不同的空间内,它只在这个空间内发生作用. 物体没用了,空间就把它剔除,不然既占地方,又需要花精力管理. 需要它的时候,就把它造出来,不需 ...
- java游戏开发杂谈 - 有限状态机
在不同的阶段,游戏所运行的逻辑.所显示的界面,都是不同的. 以五子棋举例,游戏开始.游戏中.胜负已分,对应的界面和逻辑都不同. 在游戏中,又分为:自己下棋.对方下棋.游戏暂停.悔棋等多个状态. 再比如 ...
- java游戏开发杂谈 - 线程
线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序 ...
- java游戏开发杂谈 - 创建一个窗体
package game1; import javax.swing.JFrame; /** * java游戏开发杂谈 * ---demo1:创建一个窗体 * * @author 台哥 * @date ...
- java游戏开发杂谈 - 游戏编程浅析
每个游戏,你所看到的它的一切,都是计算机画出来的! 地图是画出来,人物是画出来的,树木建筑是画出来的,菜单按钮是画出来的,滚动的文字.闪烁的图标.云雾烟火,都是画出来的. 游戏编程,所要做的,就是控制 ...
- java游戏开发杂谈 - java是什么
java是一门编程语言, 它有三个开发平台:j2ee.j2se. j2me.(其实android也算一个了) j2ee, 也就是web开发,比如网站.各类管理系统,主要是围绕数据库.网页等进 ...
- java游戏开发杂谈 - 界面刷新、坐标系
之前几篇博客里的例子,大家运行过的话,就能看出来,界面是需要刷新的. JPanel里的绘制方法是paintComponent,界面上的东西都是这个方法画出来的. JPanel对象有一个repaint方 ...
随机推荐
- java书写、数据类型、数组定义
这里只记录java与php.javascript不同的地方,相同的地方就不赘述了. 1.java文件源码为以.java为后缀的文件,字节码文件是以.class为后缀的文件. 2.写好一个java源码之 ...
- Navicat永久激活步骤,激活工具,解决注册码无效的问题
Navicat for MySQL是一套管理和开发MySQL或MariaDB的理想解决方案,支持单一程序,可同时连接到MySQL和MariaDB.这个功能齐备的前端软件为数据库管理.开发和维护提供了直 ...
- SpringCloud实战-Ribbon客户端负载均衡
前面我们已经完成了注册中心和服务提供者两个基础组件.接着介绍使用Spring Cloud Ribbon在客户端负载均衡的调用服务. ribbon 是一个客户端负载均衡器,可以简单的理解成类似于 ngi ...
- 安装Redis 编译make gcc: error trying to exec 'cc1': execvp: 没有该文件或目录的错误
Linux(Redhat) make: gcc: error trying to exec 'cc1': execvp: 没有该文件或目录的错误 排查错误: 1.检查gcc.gcc-c++是否安装rp ...
- cocos2d-x 欢乐捕鱼游戏总结
这几天一直都在做一个捕鱼游戏Demo,大概花掉了我快一个礼拜的时间.游戏主体是使用的cocos2d-x高级开发教程里面提供的小部分框架基本功能.然后自己加入所有的UI元素和玩法.变成了一个体验不错的捕 ...
- DX11 Without DirectX SDK--04 使用DirectX Tool Kit帮助开发
回到 DirectX11--使用Windows SDK来进行开发 DirectX Tool Kit下载 DirectX Tool Kit是一个包含许多类的集合,用于为公共Windows平台编写Dire ...
- mac 登录亚马逊云服务器报错:Permission denied (publickey).
申请的亚马逊云服务器EC2,实例为ubuntu系统 一.打开终端,定位到放置密钥的文件夹: 二.确保私有秘钥不是公开可见的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0p ...
- PAT1055:The World's Richest
1055. The World's Richest (25) 时间限制 400 ms 内存限制 128000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- JVM配置参数详解(目前不够完善)
最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:Perm ...
- 基于opencv3.0下的运动车辆识别
在opencv的初等应用上,对运动物体的识别主要有帧差或背景差两种方式. 帧差法主要的原理是当前帧与前一帧作差取绝对值: 背景差主要的原理是当前帧与背景帧作差取绝对值: 在识别运动车辆上主要需要以下9 ...