当前位置:网站首页 > Java教程 > 正文

java图形界面教程 pdf



AWT是基本的GUI设计工具,重点学习其中的布局格式以及事件监听事件。

首先创建一个窗口,我们先分析Frame类中的方法:

image-20210510233606337

通过上图,可以看出frame是由构造方法的重载;可以选择的设置窗口的标题;

为了让一个基本的窗口显示,我们需要设置窗口的可见性;

为了美观,我们设置:

  1. 窗口大小
  2. 窗口颜色
  3. 生成窗口的初始位置在左上角,可以设置初始的弹出位置
 

image-20210510233346958

问题:当我们在完成上述操作后,会出现一个窗口,但是我们无法手动关闭窗口,即点击右边的是没有用的;

当我们完成单个窗口的实现后,回想一些骚操作!

 

image-20210418143139887


经过上面的学习,我们基本掌握了GUI中基础的窗口设置;接下来解决窗口的关闭问题;

并且引入面板相关的概念。

一个界面只可以有一个Frame窗体组件,但是可以有多个Panel面板组件,而Panel上也可以使用FlowLayout,BorderLayout,GridLayout等各种布局管理器(后面涉及),这样可以组合使用,达到较为复杂的布局效果。

image-20210511000502873

 

WindowAdapter:

  • 用于接收窗口事件的抽象适配器类。 此类中的方法为空。 此类的存在是为了方便创建侦听器对象。
  • 扩展此类以创建WindowEvent侦听器,并覆盖感兴趣事件的方法。
  • (如果实现WindowListener接口,则必须定义其中的所有方法。此抽象类为所有接口都定义了空方法,因此只需要为你关心的事件定义方法。)
  • 使用扩展类创建一个侦听器对象,然后使用窗口的addWindowListener方法将其注册到Window中。 当窗口的状态由于打开,关闭,激活或停用,图标化或去图标化而改变时,将调用侦听器对象中的相关方法,并将WindowEvent传递给它。

image-20210418145724869

在使用 [Swing]向容器添加组件时,需要考虑组件的位置和大小。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加。这样虽然能够灵活控制组件的位置,实现却非常麻烦。

为了加快开发速度,[Java]提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。

  1. 流式布局(FlowLayout)
  2. 边框布局(BorderLayout) --东西南北中布局
  3. 表格布局(GridLayout)
 
 

image-20210419144558797

 

image-20210419145431975

 

image-20210419150107102

image-20210420105753483

 

AWT的事件处理机制是一种委派式事件处理方式:普通组件(事件源)将整个事件处理委托给特定的对象(事件监听器);当该事件源发生指定的事件时,就通知所委托的事件监听器,由事件监听器来处理这个事件。 每个组件均可以针对特定的事件指定一个或多个事件监听对象,每个事件监听器也可以监听一个或多个事件源.

简单来说,当用户触发某个条件或者事件的时候,处理代码将被自动运行,类似钩子一般。

 

效果:

image-20210421131136068

 

image-20210421133022560

 

注解:一般常见于Java 的awt, swing的事件处理里面,e是指一个事件,如ActionEvent,MouseMoveEvent等,它有一个事件发起者,用e.getSource()可以获得,但getSource()返回的是Object类型(保持方法的通用性),所以如果已经知道是按钮产生的事件,可以用(JButton)e.getSourse()强制转换成JButton对象,这样就可以用JButton对象的方法了

image-20210423131746857

基础写法:(面向过程的)

 

实现效果:

image-20210424100328180

image-20210424100337002

升级版:(面向对象)+组合概念

 

高级写法:(内部类)

内部类最大的好处是:能够畅通无阻的访问外部类

 
 

设置了画笔颜色:

image-20210425092714323

初始画笔:

image-20210425092621192

目的:实现鼠标画画--》最简单的点击

image-20210428165653051

 
 
 

效果图:

image-20210430095354318

 

效果:

image-20210430100244471

 

效果图:

image-20210502160936757

image-20210502161016218

 

image-20210502160839460

图片标签:

 

image-20210502163011604

 

效果图:

image-20210502171524291

 

image-20210502191707184

 

image-20210502192258170

 

image-20210502193312087

 

image-20210502193739130

 

优化部分:

积分越高等级越高,等级越高timer定时频率越快
小蛇撞墙增加失败判断
食物分不同颜色,不同分数身体增长长度不同,或者减少长度,或者小蛇死掉
小蛇转向方向,不能和原来的方向正相反
鼠标控制方向
游戏记录存数据库
连击对战
登录

版权声明


相关文章:

  • java前端视频教程2025-01-19 14:50:03
  • java教程第4章2025-01-19 14:50:03
  • pdfbox教程 java2025-01-19 14:50:03
  • java画类图教程2025-01-19 14:50:03
  • java多媒体视频教程2025-01-19 14:50:03
  • java窗体教程鼠标2025-01-19 14:50:03
  • java jibx教程2025-01-19 14:50:03
  • 百度云 java教程2025-01-19 14:50:03
  • beanstalkd java教程2025-01-19 14:50:03
  • java象棋制作教程2025-01-19 14:50:03