【Java】Java组件及事件处理(实验七)

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

1、掌握使用布局管理器对组件进行管理.;

2、掌握Java Swing 组件的使用方法。

3、理解 Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法;

二、实验内容

1、编写一个算术测试小软件,用来训练小学生的算术能力。软件界面如下图所示,点击“获取题目”的按钮,监视器负责给出算术题目显示在文本框和标签上。用户在第三个文本框输入答案,点击“确认答案”按钮,系统给出结果“回答正确”或者“回答错误”。

算法描述及实验步骤:

1、定义一个MainType主类。负责创建窗口对象、设置窗口标题和大小位置。

2、定义一个CalWindow类实现自定义窗口。 

  • 其中声明窗口中的各组件:两个单选按钮、三个文本框、三个提示标签还有一个监视器。
  • 定义无参构造方法。为声明的各组件创建对象和注册监视器并将主窗口的地址引用传递给监视器中的某属性。设置窗口为流式布局并将各组件添加到窗口。设置窗口可见和默认关闭方式

3、定义实现ActionListener接口的监视器类来处理两按钮触发的动作事件。

源代码:

 实验运行截图:

 

2、编写应用程序,有一个窗口,该窗口的布局为BorderLayout布局。窗口的中心添加一个JPanel容器pCenter,pCenter的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的上面添加一个JPane容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth。单击后分别显示下一月和上一月的日历。窗口下面添加一个JPanel容器pSouth,其布局是FlowLayout布局,pSouth中放置一个标签用来显示一些信息。界面如下图所示。

 算法描述及实验步骤:

1、定义一个MainType主类用于创建窗口、设置标题、设置窗口大小位置

2、创建一个Ca1endarWindow类自定义窗口。声明三个容器面板、两个按钮、一个提示标签和一个7行7列的标签数组用作日历的日期、一个监视器、一个Calendar类的对象用于获取日历。定义构造方法为各组件创建对象、监视器传递窗口引用、为两按钮注册监视器、调用日历类对象中的获取日历方法。循环遍历标签数组元素将其添加到中间容器中、其他组件添加到窗口;将标签数组的第一行标签组件用作日历的星期标识,1~5行的所有标签组件作为日历的每天元素对日历进行初始化。最后设置窗口可见性和关闭方式。

3、定义实现actionlistener接口的类实现对窗口两按钮事件的处理。

①如果是上个月

        调用日历类获取上月日历对象

        更新窗口底部日期标签。

②下个月类似

4、定义Calendar类.结合日期1ocaldate类创建日期对象。获取每月1号所属星期、天数,循环产生模拟日历的二维数组。最后返回创建的二维数组数组地址的引用。

源代码:

实验运行截图:

 

 

 

三、实验小结

1、容器就是用来存放其它组件如:按钮、文本框、下拉列表、树组件、表格等和中间容器的容器比如JFrame窗口、对话框、面板等都是容器。用户可以通过自定义类并继承JFrame类来自定义窗口类。默认情况下窗口是不可见的、需手动设置窗口的可见性。

2、菜单条需放在容器中、菜单需放在菜单条中、菜单项需放在菜单中。并且菜单也是一种菜单项组件可以作为其它菜单的菜单项来内嵌进去。

3、常用容器有JFrame底层容器、面板、选项卡容器、滚动条容器、分层容器等。所谓布局就是用来规定容器窗口中存放的各组件如何排列分布的一种规则。JFrame窗口默认是BorderLayout边界布局、常用的布局类还有FlowLayout流式布局、GridLayout窗格布局等。给窗口添加组件使用add()、设置布局使用setLayout(布局类的对象)。

4、所谓事件其实就是用户在用光标操作组件时(按钮),组件会自动创建个事件类的对象,这种事情我们就说组件触发了某事件。所谓监视器其实就是一个类的对象、只不过这个类实现了处理特定事件的接口的抽象方法(此方法用来对触发的事件进行处理)。只要想让程序对用户操作组件时产生响应,就需要给组件添加监视器对象。此时,只要用户一点击组件如:按钮,系统就会自动创建一个事件类的对象,然后这个组件的监视器对象就会捕捉到这个事件类的对象,然后监视器就带着事件类的对象自动调用自身所在类中的专门用来处理此事件的方法,来对组件触发的特定事件进行处理。

5、对话框有两种类型即有模式、无模式的对话框;大部分创建的对话框默认都是有模式的。所谓有模式的对话框即弹出对话框后,用户只能在本对话框内进行操作而无法操作其它窗口中的各组件。同时程序弹出“有模式对话框的代码”执行后,其后面所有代码将被阻塞无法执行,除非用户手动操作让有模式的对话框消失,程序后面的代码才会接着执行、用户才能操作其它的窗口。而无模式的对话框正好与有模式的对话框相反、用户可以在弹出有模式的对话框后对其他的窗口进行操作,并且程序弹出对话框代码执行后、其后面的代码也会接着执行不会被对话框阻塞。

6、树组件中不管什么对象(目录还是文件)都是被称作节点。树组件只有一个根节点、其它结点如果其下面还有子节点的就被称作为分支节点如(目录)、无其它子节点的被称作为叶子结点如(文本)。每个结点都必须绑定一个标签对象或图标来显示自身的名字和图案以示区分树组件各结点。用户点击树组件各结点时会触发事件类、可以通过将树组件绑定监视器对节点触发的事件进行处理。

7、表格组件使用JTable类进行创建。如果第一个参数传递的是二维数组,则表格显示的便是二维数组中对应位置元素存放的数据,用户修改表格时修改的也是二维数组中对应元素的值。第二个参数若传递的是一维数组,则表格显示的列字段名就是一维数组的元素值。同时用户可以通过光标来拖动表格的各列排序。

8、按钮组件只要与键盘绑定并且为按钮的键盘操作添加了监视器,此时用户敲击指定按键,按钮就会作为事件源触发事件(此事件与用户通过光标点击按钮触发的事件类一样)。同时按键的监视器就会捕捉到用户通过按键使按钮组件触发的事件,并对此事件通过自动调用自身特定方法对事件进行处理。

 

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Orion Guan's 山月润无声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值