- 博客(92)
- 收藏
- 关注
原创 15.3-全栈Java笔记:MouseEvent事件类型可以实现哪些功能?
MouseEvent事件MouseEvent是鼠标事件,对应的监听器其中之一是MouseListener接口,该接口中的方法如下: //鼠标点击时 public void mouseClicked(MouseEvent me); //鼠标进入时 public void mouseEntered(MouseEvent me); //鼠标离开时 public void mou
2017-08-18 14:30:14 1939
原创 15.2-全栈Java笔记:ActionEvent事件类型可以实现哪些功能?
ActionEvent事件ActionEvent可能是使用得最多的事件类型,其对应的监听器是ActionListener接口,该监听器接口的实现类必须重写actionPerformed方法,当事件发生时就会调用该方法。这个方法的原型是:public void actionPerformed(ActionEvent e); 这个actionPerformed方法就是当事件发生时,由系统自动调用的方法
2017-08-17 15:43:37 2440
原创 15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??
应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型。事件模型简介及常见事件模型对于采用了图形用户界面的程序来说,事件控制是非常重要的。 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件。一个事件源必须注册监听器以
2017-08-16 14:37:27 721
原创 14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格
布局管理器读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变。那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种“布局”,要管理这些布局,就需要本节学习的布局管理器。 管理布局的类由java
2017-08-15 14:46:02 681
原创 14.4-全栈Java笔记: javax.swing常用控件有哪些?怎么用?
常用基本控件javax.swing.JButton 在图形界面程序中,按钮可能是使用量最大的控件之一,javax.swing包中JButton类就是用来创建按钮的。如表1所示,为JButton常用的构造方法。 javax.swing.JLabel JLabel控件是最简单的Swing组件之一,用于在窗体上显示标签, JLabel既可以显示文本,也可以显示图像。如表3所示,为JLabel常用的构
2017-08-14 14:58:03 977
原创 14.3-全栈Java笔记:JPanel原来是这样用的
在GUI编程中,如果我们要向窗口中直接添加控件(如按钮控件、标签控件、文本框控件等)是不建议的,所以就出现了容器(JPanel),以后我们只需要在容器里加控件,然后将容器加到窗口上即可。想象一下,窗口如同黑板的外框,我们不会在外框上写字,我们要在被外框包含的黑板的面板上写字,那么黑板的面板就是我们的容器,写在黑板上的字就是控件。JPanel的无参构造方法是在创建一个容器的时候,该容器的默认布局管理器
2017-08-11 14:24:37 691
原创 14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!!
上节我们聊到GUI(Graphical User Interface)的概念,并学习GUI编程中主要需掌握两个包,分别是:AWT和Swing,本节我们会通过Swing程序中常用的类和控件来实现第一个窗口。javax.swing.JFrame JFrame在GUI中为一个窗口对象,继承于Frame。JFrame控件用于在Swing程序中创建窗体。如表1所示,为JFrame常见的构造方法。 注意:
2017-08-10 14:54:42 1555
原创 14.1-全栈Java笔记: Java语言中GUI到底是神马鬼?| AWT | Swing
到目前为止,我们在Java中编写的基本都是基于控制台的程序;而Java编程语言之所以如此流行的一个主要原因之一,就是因为它支持图形用户界面功能,即GUI(Graphical User Interface)。GUI(Graphical User Interface)即图形用户界面,就是应用程序提供给我们用户操作的图形界面,包括窗口、菜单、工具栏及其它多种图形界面元素,如文本框、按钮、列表框、对话框等。
2017-08-09 14:44:48 568
原创 13.9-全栈Java笔记:打飞机游戏实战项目|Time|Plane|其他案例展示
其他功能 完成了基本的功能,这时候体验度还是很一般。为了让玩家更愿意玩我们的游戏,增加一些锦上添花的功能就很有必要。比如:游戏计时功能、全网排名等等。计时功能 我们希望在玩游戏时,增加计时功能,可以清晰的看到自己玩了多长时间,增加刺激性。这个功能的核心有两点: 1. 时间计算:当前时刻- 游戏结束的时刻 2. 显示时间到窗口时间计算 我们在初始化窗口时,就保存一个起始时间;当飞机死亡时,保
2017-08-08 14:41:55 803
原创 13.8-全栈Java笔记:打飞机游戏实战项目|Explode|MyGameFrame|Plane
爆炸效果的实现 飞机被炮弹击中后,需要出现一个爆炸效果,让我们的画面更刺激。 爆炸效果的实现在游戏开发中也很常见。 我们定义Exlode类来表示爆炸的信息,爆炸类和普通类不一样的地方在于他实际上存储了一系列爆炸的图片,然后,进行轮播。最后,我们看到的就是一组酷炫的效果。 我们这里准备了一系列爆炸图片: 从爆炸开始的一个小火球到大火球,再到消失时的小火球。爆炸对象只需轮流加载这些图片即可。
2017-08-07 14:43:00 479
原创 13.7-全栈Java笔记:打飞机游戏实战项目|Rectangle|intersects|Plane
碰撞类检测技术 游戏中,碰撞是遇到最频繁的技术。当然,很多游戏引擎内部已经做了碰撞检测处理,我们只需调用即可。本节课是从碰撞的原理进行讲解,大家自己去实现基本的碰撞检测。矩形检测原理 游戏中,多个元素是否碰到一起,实际上,通常是用“矩形检测”原理实现的。 我们在前面提到,游戏中所有的物体都可以抽象成“矩形”,我们只需判断两个矩形是否相交即可。对于一些复杂的多边形、不规则物体,实际上是将他分解成多
2017-08-04 14:22:33 1687 1
原创 13.6-全栈Java笔记:打飞机游戏实战项目|Shell|speed|launchFrame
炮弹类设计 通过炮弹类的设计,我们可以更深入了解构造器的用法以及容器的用法。同时,可能还需要读者稍微回忆一下初中数学曾学过的三角函数,这样更能理解炮弹飞行路径的计算原理。 当然,如果忘记这些知识了也没关系,毕竟在实际开发中很少涉及数学原理性的内容。炮弹类基本设计 炮弹类我们用实心的黄色椭圆实现,不再加载新的图片。当然,大家课下可以自行找一些炮弹图片亦可。 我们的逻辑是在窗口固定位置(200,2
2017-08-03 14:36:58 1448
原创 13.5-全栈Java笔记:打飞机游戏实战项目|KeyEvent|Plane|live
飞机类设计 飞机是我们游戏中的主物体,需要由玩家直接控制,手段有:键盘、鼠标、触摸屏等等。无论是什么硬件,本质上都是玩家通过硬件改变游戏物体的坐标,从而实现多种多样的效果。 本节中,我们重点使用键盘进行交互。大家学会了使用键盘操控游戏物体,通过鼠标或其他,我们只需要通过相关API的帮助即可轻松实现。键盘控制原理 键盘和程序交互时,每次按下键、松开键都会触发相应的键盘事件,事件的信息都封装到了K
2017-08-02 14:38:03 835
原创 13.4-全栈Java笔记:打飞机游戏实战项目|offScreenImage|GameObject|Plane
全栈Java笔记:打飞机游戏实战项目上节,我们实现了动画效果,但是发现窗口会不停的闪烁,体验度非常差。在实际开发中,绘制图形是非常复杂的,绘图可能需要几秒甚至更长时间,也经常发生闪烁现象, 为了解决这个问题,我们通常使用“双缓冲技术”。1)“双缓冲技术”的绘图过程
2017-08-01 14:50:06 1577
原创 13.3-全栈Java笔记:打飞机游戏实战项目|PaintThread|launchFrame
多线程和内部类实现动画效果 1)增加绘制窗口的线程类 前三个版本,我们步步为营,每个小版本都有功能的突破。但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样“各种动、各种炫”。本节我们结合多线程实现动画效果。 我们在MyGameFrame类中定义“重画窗口线程PaintThread类”,为了方便使用MyGameFrame类的属性和方法,我们将PaintThread定义成内部类。【
2017-07-31 14:51:58 1285
原创 13.2-全栈Java笔记:打飞机游戏实战项目|Graphics|ImageIO|GameUtil
上节我们讲到如何在游戏项目中运用AWT技术绘制游戏窗口,本节我们继续往下讲~~图形和文本绘制 1)paint方法 如果要在窗口中画图或者显示什么内容,我们需要重写paint(Graphics g)方法。 这个方法的作用是:画出整个窗口及其内部内容。它会被系统自动调用。我们自己不需要去调用这个方法。 【示例1】paint方法介绍@Overridepublic void paint(Graphi
2017-07-28 14:53:36 1409 3
原创 13.1-全栈Java笔记:打飞机游戏实战项目|AWT|MyGameFrame
重点内容简介和项目目标 通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用。 比如:多线程用来实现动画效果、容器实现对于多发炮弹的存取和处理、常用类等等的应用。 寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上“程序员”。老鸟建议 很多朋友会疑惑:“游戏项目,又不能拿到企业面试中,为什么要讲?” 这是一种太过于功利的想法。就像,
2017-07-27 15:37:27 1253
原创 12.7-全栈Java笔记:Java网络编程(五)
UDP通讯的实现1.DatagramSocket:用于发送或接收数据包当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收。DatagramSocket有两种构造函数。
2017-07-04 09:25:25 289
原创 12.6-全栈Java笔记:Java网络编程(四)
上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活。本节课我们讲解如何在服务器和客户端之间实现聊天室~需要思考的问题:服务器端:一个线程专门发送消息,一个线程专门接收消息。客户端:一个线程专门发送消息,一个线程专门接收消息。除了消化这段代码外,还需要思考,怎么实现一个聊天室!(难度较大!!)【示例1】聊天室服务器端
2017-07-04 09:23:57 184
原创 12.5-全栈Java笔记:Java网络编程(三)
上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性。那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据。如果发送方和接收方计算机确定好端口,他们就可以通信了,其中的端口用套接字表
2017-07-04 09:22:34 249
原创 12.4-全栈Java笔记:Java网络编程(二)
基于TCP协议的Socket编程和通信在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。 “请求-响应”模式: Socket类:发送TCP消息 ServerSocket类:创建服务器套接字是一种进程
2017-07-04 09:21:09 240
原创 12.3-全栈Java笔记:Java网络编程(一)
Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能。Java虚拟机负责提供与操作系统的实际连接。 InetAddress作用:封装计算机的IP地址和DNS(没有端口信息!)。特点:这个类没有构造函数。如果要得到对象,只能通过静态方法:getLocalHost、getByName、 getAllByName、 getAddress、getHost
2017-07-04 09:20:00 230
原创 12.2-全栈Java笔记: TCP协议和UDP协议
区别在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。这两种传输方式都是实际的网络编程中进行使用,重要的数据一般使用TCP方式进行数据传输
2017-07-03 09:48:06 398
原创 12.1-全栈Java笔记:网络编程的基本概念
什么是计算机网络?把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。计算机网络的主要功能:资源共享信息传输与集中处理均衡负荷与分布处理综合信息服务 (www/综合业务数字网络 ISDN)什么是网络通信协议?计算机网络中实现通信必须有一
2017-07-03 09:42:18 463
原创 11.11-全栈Java笔记:线程状态转换和任务定时调度
线程状态转换 图1 线程的状态1)New :创建好线程对象,但没有启动的时候。一个线程调用start()之后不一定会马上启动,此时进入就绪状态,等待得到资源。2)就绪线程序通过Scheduler(调度程序)去确定是否运行。3)Runing---dead:运行结束(非双向,为单向箭头)。4)Runing---就绪:暂停(除了没有CPU,具备运行的所有条件
2017-07-03 09:39:54 477
原创 11.9-全栈Java笔记: 线程并发协作(生产者/消费者模式)
多线程环境下,我们经常需要多个线程的并发和协作。这个时候,就需要了解一个重要的多线程并发协作模型“生产者消费者模式”。 什么是生产者?生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、线程、进程)。 什么是消费者?消费者指的是负责处理数据的模块(这里模块可能是:方法、对象、线程、进程)。什么是缓冲区?消费者不能直接使用生产者的数据,它们之间有个“缓冲
2017-07-03 09:38:13 543
原创 11.8-全栈Java笔记:死锁及解决方案
死锁的概念“死锁”指的是:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。 因此, 某一个同步块需要同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。下面案例中,“化妆线程”需要同时拥有“镜子对象”、“口红对象”才能运行同步块。那么,实际运行时,“小丫的化妆线程
2017-07-03 09:32:59 858
原创 11.7-全栈Java笔记:如何实现线程同步
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问时的冲突问题。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized
2017-07-03 09:30:07 222
原创 11.6-全栈Java笔记:什么是线程同步
同步问题的提出现实生活中,我们会遇到“同一个资源,多个人都想使用”。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前人使用完后,后人再使用。线程同步的概念处理多线程问题时,多个线程同时访问同一个对象,并且一个线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个线程需要同时访问同一个对象,则线
2017-07-03 09:28:06 239
原创 11.5-全栈Java笔记:线程基本信息和优先级别
获取线程基本信息的方法表 线程的常用方法方法功能isAlive()判断线程是否还“活”着,即线程是否还未终止。getPriority()获得线程的优先级数值setPriority()设置线程的优先级数值setName()
2017-07-03 09:26:29 223
原创 11.4-全栈Java笔记:线程三种状态的控制
关于Java线程终止、暂停、联合的文章网上有很多,经过测试,本节重点讲解的是针对不同使用场景选择合适的方法。终止线程的典型方式终止线程我们一般不使用JDK提供的stop()/destroy()方法(他们本身也被JDK废弃了)。通常的做法是提供一个boolean型的终止变量,当这个变量置为false,则终止线程的运行。【示例1】终止线程的典型方法(重要!!!)
2017-07-03 09:25:13 257
原创 11.3-全栈Java笔记:线程的生命周期
一个线程对象在它的生命周期内,需要经历5个状态。新生状态(New)用new关键字建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。就绪状态(Runnable)处于就绪状态的线程已经具备了运行条件,但还没有分配到CPU,处于 “线程就绪队列”,等待系统为其分配CPU。 就绪状态并不是执行状态,当系统选定一
2017-07-03 09:22:43 286
原创 11.2-全栈Java笔记:Java中如何实现多线程
在JAVA中使用多线程非常简单,我们先学习如何创建和使用线程,然后结合案例再深入剖析线程的特性。通过继承Thread类实现多线程继承Thread类实现多线程的步骤:1. 在Java中负责线程的这个功能的是java.lang.Thread 这个类2. 可以通过创建 Thread 的实例来创建新的线程。3. 每个线程都是通过某个特定Thread对象所对应的方法run( )
2017-06-30 10:25:02 204
原创 11.1-全栈Java笔记:多线程技术的基本概念
多线程是JAVA语言的重要特性,大量应用于网络编程、应用于服务器端程序的开发、以及最常见的UI界面底层原理、操作系统底层原理都大量使用了多线程。我们可以流畅的点击软件或者游戏中的各种按钮,其实,底层就是多线程的应用。UI界面的主线程绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作。当这个线程工作完毕后,再更新到主界面上。我们可以上百人、上千人、上万人同时访问
2017-06-30 10:19:57 630
原创 10.10-全栈Java笔记:Apache IOUtils和FileUtils的使用
JDK中提供的文件操作相关的类,功能非常基础,进行复杂操作时需要做大量编程工作。实际开发中,往往需要你自己动手编写相关的,尤其在遍历目录文件时,经常用到递归,非常繁琐。 Apache-commons工具包中提供了FileUtils,可以让我们非常方便的对文件和目录进行操作。 本文就是让大家对FileUtils类有一个全面的认识,便于大家以后开发文件和目录相关功能。 Apache I
2017-06-30 10:04:31 1307
原创 10.9-全栈Java笔记:装饰器模式构建IO流体系
装饰器模式装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对原有类的包装和装饰,使新的类具有更强的功能。 我这里有智能手机Iphone, 我们可以通过加装投影组件,实现原有手机功能的扩展。这就是一种“装饰器模式”。 我们在未来普通人加装“外骨骼”装饰,让普通人具有力扛千斤的能力,也是一种“装饰器模式”。 【图】 手机经过投影套件“装饰后”,
2017-06-30 10:01:38 278
原创 10.8-全栈Java笔记:序列化/反序列化的步骤和实例
本节我们详细讲解10.3节中提到的序列化和反序列化操作。序列化和反序列化是什么当两个进程远程通信时,彼此可以发送各种类型的数据。 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。比如,我们可以通过http协议发送字符串信息;我们也可以在网络上直接发送JAVA对象。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
2017-06-30 10:00:42 237
原创 10.7-全栈Java笔记:常见流详解(五)
本节我们学习「常见流中的最后两项:转换流和随意访问文件流」~转换流InputStreamReader/OutputStreamWriter用来实现将字节流转化成字符流。比如,如下场景:System.in是字节流对象, new BufferedReader(须接受Reader对象)。我们就能将System.in转换成Reader对象,即可完成此场景。【示例1】使用Input
2017-06-30 09:57:52 186
原创 10.6-全栈Java笔记:常见流详解(四)
上节我们讲到「Java中常用流:数据流和对象流」,本节我们学习文件字符流和文件缓冲流~文件字符流前面介绍的文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现“乱码”现象。所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作。【示例1】使用FileReader与FileWriter实现文本文件的copypac
2017-06-30 09:56:38 294
原创 10.5-全栈Java笔记:常见流详解(三)
上节我们讲到「Java中常用流:缓冲流」,本节我们学习数据流和对象流~ 数据流数据流将“基本数据类型变量”作为数据源,从而允许程序以与机器无关方式从底层输入输出流中操作java基本数据类型。 DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int,double 等)的方法。【示例1】DataInput
2017-06-30 09:55:53 254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人