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方 ...
随机推荐
- 从 <sofa:XXX> 标签开始看 SOFA-Boot 如何融入 Spring
前言 SOFA-Boot 现阶段支持 XML 的方式在 Spring 中定义 Bean,通过这些标签,我们就能从 Spring 容器中取出 RPC 中的引用,并进行调用,那么他是如何处理这些自定义标签 ...
- 常用的几个在线生成网址二维码的API接口
原创,转载请注明出处! 用接口的好处就是简单,方便,时时更新,二维码生成以后不用保存在本项目服务器上面,可以减少不必要的开支,无需下载安装什么软件,可简单方便地引用,这才是最便捷的免费网址二维码生成 ...
- ScalaPB(3): gRPC streaming
接着上期讨论的gRPC unary服务我们跟着介绍gRPC streaming,包括: Server-Streaming, Client-Streaming及Bidirectional-Streami ...
- Pycharm的相关设置和快捷键集合
原文参考地址:python 环境搭建及pycharm的使用 一.相关设置 1.主题和字体 主题选这个 字体大小在这里设置 二.快捷键 1.编辑(Editing)Ctrl + Space 基本的代码完成 ...
- linux 关于Apache默认编码错误 导致网站乱码的解决方案
Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题 最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站 ...
- Redis模糊查询
最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 感谢该帖作者:WalkerAlone 原文链接:ht ...
- getopts的使用
getopts的使用 语法格式:getopts [option[:]] [DESCPRITION] VARIABLE option:表示为某个脚本可以使用的选项 ":":如果某个选 ...
- mybatis延迟加载详解
http://www.cnblogs.com/selene/p/4631244.html http://blog.csdn.net/eson_15/article/details/51668523
- 【转】MySQL int转换成varchar引发的慢查询
转自http://www.cnblogs.com/billyxp/archive/2013/05/31/3110016.html 最近一周接连处理了2个由于int向varchar转换无法使用索引,从而 ...
- 3.python元类编程
1.1.propety动态属性 在面向对象编程中,我们一般把名词性的东西映射成属性,动词性的东西映射成方法.在python中他们对应的分别是属性self.xxx和类方法.但有时我们需要的属性需要根据 ...