15.3-全栈Java笔记:MouseEvent事件类型可以实现哪些功能? MouseEvent事件MouseEvent是鼠标事件,对应的监听器其中之一是MouseListener接口,该接口中的方法如下: //鼠标点击时 public void mouseClicked(MouseEvent me); //鼠标进入时 public void mouseEntered(MouseEvent me); //鼠标离开时 public void mou
15.2-全栈Java笔记:ActionEvent事件类型可以实现哪些功能? ActionEvent事件ActionEvent可能是使用得最多的事件类型,其对应的监听器是ActionListener接口,该监听器接口的实现类必须重写actionPerformed方法,当事件发生时就会调用该方法。这个方法的原型是:public void actionPerformed(ActionEvent e); 这个actionPerformed方法就是当事件发生时,由系统自动调用的方法
15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步?? 应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型。事件模型简介及常见事件模型对于采用了图形用户界面的程序来说,事件控制是非常重要的。 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件。一个事件源必须注册监听器以
14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格 布局管理器读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变。那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种“布局”,要管理这些布局,就需要本节学习的布局管理器。 管理布局的类由java
14.4-全栈Java笔记: javax.swing常用控件有哪些?怎么用? 常用基本控件javax.swing.JButton 在图形界面程序中,按钮可能是使用量最大的控件之一,javax.swing包中JButton类就是用来创建按钮的。如表1所示,为JButton常用的构造方法。 javax.swing.JLabel JLabel控件是最简单的Swing组件之一,用于在窗体上显示标签, JLabel既可以显示文本,也可以显示图像。如表3所示,为JLabel常用的构
14.3-全栈Java笔记:JPanel原来是这样用的 在GUI编程中,如果我们要向窗口中直接添加控件(如按钮控件、标签控件、文本框控件等)是不建议的,所以就出现了容器(JPanel),以后我们只需要在容器里加控件,然后将容器加到窗口上即可。想象一下,窗口如同黑板的外框,我们不会在外框上写字,我们要在被外框包含的黑板的面板上写字,那么黑板的面板就是我们的容器,写在黑板上的字就是控件。JPanel的无参构造方法是在创建一个容器的时候,该容器的默认布局管理器
14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!! 上节我们聊到GUI(Graphical User Interface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口。javax.swing.JFrame JFrame在GUI中为一个窗口对象,继承于Frame。JFrame控件用于在Swing程序中创建窗体。如表1所示,为JFrame常见的构造方法。 注意:
14.1-全栈Java笔记: Java语言中GUI到底是神马鬼?| AWT | Swing 到目前为止,我们在Java中编写的基本都是基于控制台的程序;而Java编程语言之所以如此流行的一个主要原因之一,就是因为它支持图形用户界面功能,即GUI(Graphical User Interface)。GUI(Graphical User Interface)即图形用户界面,就是应用程序提供给我们用户操作的图形界面,包括窗口、菜单、工具栏及其它多种图形界面元素,如文本框、按钮、列表框、对话框等。
13.9-全栈Java笔记:打飞机游戏实战项目|Time|Plane|其他案例展示 其他功能 完成了基本的功能,这时候体验度还是很一般。为了让玩家更愿意玩我们的游戏,增加一些锦上添花的功能就很有必要。比如:游戏计时功能、全网排名等等。计时功能 我们希望在玩游戏时,增加计时功能,可以清晰的看到自己玩了多长时间,增加刺激性。这个功能的核心有两点: 1. 时间计算:当前时刻- 游戏结束的时刻 2. 显示时间到窗口时间计算 我们在初始化窗口时,就保存一个起始时间;当飞机死亡时,保
13.8-全栈Java笔记:打飞机游戏实战项目|Explode|MyGameFrame|Plane 爆炸效果的实现 飞机被炮弹击中后,需要出现一个爆炸效果,让我们的画面更刺激。 爆炸效果的实现在游戏开发中也很常见。 我们定义Exlode类来表示爆炸的信息,爆炸类和普通类不一样的地方在于他实际上存储了一系列爆炸的图片,然后,进行轮播。最后,我们看到的就是一组酷炫的效果。 我们这里准备了一系列爆炸图片: 从爆炸开始的一个小火球到大火球,再到消失时的小火球。爆炸对象只需轮流加载这些图片即可。
13.7-全栈Java笔记:打飞机游戏实战项目|Rectangle|intersects|Plane 碰撞类检测技术 游戏中,碰撞是遇到最频繁的技术。当然,很多游戏引擎内部已经做了碰撞检测处理,我们只需调用即可。本节课是从碰撞的原理进行讲解,大家自己去实现基本的碰撞检测。矩形检测原理 游戏中,多个元素是否碰到一起,实际上,通常是用“矩形检测”原理实现的。 我们在前面提到,游戏中所有的物体都可以抽象成“矩形”,我们只需判断两个矩形是否相交即可。对于一些复杂的多边形、不规则物体,实际上是将他分解成多
13.6-全栈Java笔记:打飞机游戏实战项目|Shell|speed|launchFrame 炮弹类设计 通过炮弹类的设计,我们可以更深入了解构造器的用法以及容器的用法。同时,可能还需要读者稍微回忆一下初中数学曾学过的三角函数,这样更能理解炮弹飞行路径的计算原理。 当然,如果忘记这些知识了也没关系,毕竟在实际开发中很少涉及数学原理性的内容。炮弹类基本设计 炮弹类我们用实心的黄色椭圆实现,不再加载新的图片。当然,大家课下可以自行找一些炮弹图片亦可。 我们的逻辑是在窗口固定位置(200,2
13.5-全栈Java笔记:打飞机游戏实战项目|KeyEvent|Plane|live 飞机类设计 飞机是我们游戏中的主物体,需要由玩家直接控制,手段有:键盘、鼠标、触摸屏等等。无论是什么硬件,本质上都是玩家通过硬件改变游戏物体的坐标,从而实现多种多样的效果。 本节中,我们重点使用键盘进行交互。大家学会了使用键盘操控游戏物体,通过鼠标或其他,我们只需要通过相关API的帮助即可轻松实现。键盘控制原理 键盘和程序交互时,每次按下键、松开键都会触发相应的键盘事件,事件的信息都封装到了K
13.4-全栈Java笔记:打飞机游戏实战项目|offScreenImage|GameObject|Plane 全栈Java笔记:打飞机游戏实战项目上节,我们实现了动画效果,但是发现窗口会不停的闪烁,体验度非常差。在实际开发中,绘制图形是非常复杂的,绘图可能需要几秒甚至更长时间,也经常发生闪烁现象, 为了解决这个问题,我们通常使用“双缓冲技术”。1)“双缓冲技术”的绘图过程
13.3-全栈Java笔记:打飞机游戏实战项目|PaintThread|launchFrame 多线程和内部类实现动画效果 1)增加绘制窗口的线程类 前三个版本,我们步步为营,每个小版本都有功能的突破。但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样“各种动、各种炫”。本节我们结合多线程实现动画效果。 我们在MyGameFrame类中定义“重画窗口线程PaintThread类”,为了方便使用MyGameFrame类的属性和方法,我们将PaintThread定义成内部类。【
13.2-全栈Java笔记:打飞机游戏实战项目|Graphics|ImageIO|GameUtil 上节我们讲到如何在游戏项目中运用AWT技术绘制游戏窗口,本节我们继续往下讲~~图形和文本绘制 1)paint方法 如果要在窗口中画图或者显示什么内容,我们需要重写paint(Graphics g)方法。 这个方法的作用是:画出整个窗口及其内部内容。它会被系统自动调用。我们自己不需要去调用这个方法。 【示例1】paint方法介绍@Overridepublic void paint(Graphi
13.1-全栈Java笔记:打飞机游戏实战项目|AWT|MyGameFrame 重点内容简介和项目目标 通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用。 比如:多线程用来实现动画效果、容器实现对于多发炮弹的存取和处理、常用类等等的应用。 寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上“程序员”。老鸟建议 很多朋友会疑惑:“游戏项目,又不能拿到企业面试中,为什么要讲?” 这是一种太过于功利的想法。就像,
12.7-全栈Java笔记:Java网络编程(五) UDP通讯的实现1.DatagramSocket:用于发送或接收数据包当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收。DatagramSocket有两种构造函数。
12.6-全栈Java笔记:Java网络编程(四) 上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活。本节课我们讲解如何在服务器和客户端之间实现聊天室~需要思考的问题:服务器端:一个线程专门发送消息,一个线程专门接收消息。客户端:一个线程专门发送消息,一个线程专门接收消息。除了消化这段代码外,还需要思考,怎么实现一个聊天室!(难度较大!!)【示例1】聊天室服务器端
12.5-全栈Java笔记:Java网络编程(三) 上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据。如果发送方和接收方计算机确定好端口,他们就可以通信了,其中的端口用套接字表