java基础 ---Swing事件编程

GUI的设计就剩个菜单组建,这个组件也是想当于容器套容器,在设计方面没有什么难度,主要是一些事件的响应。还有另一种事件的监听方式,也就是适配器监听方法。

1、菜单

要设计一个菜单那么有三大组件是不可或缺的。即JMenuBar、JMenu、JmenuItem。

(1)JMenuBar组件的功能是用来摆入JMenu组件.当我们建立完许多的JMenu组件后,需要通过JMenuBar组件来将JMenu组件加入到窗口中.虽然我们由下表中看出JMenuBar组件只有一种构造方式,但是它对于构造一个菜单来说是个不可缺少的组件.

JMenuBar构造函数:

JMenuBar():建立一个新的JMenuBar;

由于构造一个空的JMenuBar然后设置到窗口上对于窗口来说是没有意义的,因此JMenuBar需要结合至少一个以上的JMenu组件才会在画面上显现出视觉的效果。

(2)JMenu组件是用来存放和整合JMenuItem的组件,这个组件也是在构成一个菜单中不可或缺的组件之一.JMenu可以是单一层次的结构也可以是一个层次式的结构,要使用何种形式的结构取决于界面设计上的需要而定。

(3)JMenuItem继承AbstractButton类,因此JMenuItem具有许多AbstractButton的特性,也可以说JMenuItem是一种特殊的Button,所以JMenuItem支持许多在Button中好用的功能,例如加入图标文件或是当我们在菜单中选择某一项JMenuItem时就如同按下按钮的操作一样触发ActionEvent,通过ActionEvent的机制我们就能针对不同的JMenuItem编写其对应的程序区段。

2、Adapter事件监听

适配器与标准事件处理的区别在于如果使用标准事件处理当该监听器方法不只一个的时候,也需要把其中所有的方法都覆盖进程序代码中,即使某些方法不需要使用。如果使用适配器可以只需要将用到的方法写进代码即可。下面建立一个监听事件的类,当window被关闭时则会响应该时间。

class WindowProc extends WindowAdapter

{

public void windowClosing(WindowEvent e)

{

......

}

}

4、JavaBean 模式

今天的课堂作业就是对JavaBean这个种设计模式的应用,有些同学认为使用这种模式反而使程序更加烦琐,不易理解。其实不然,虽然我们可以使用其他方式来完成今天这个作业,也许更简单,但是javaBean是种设计理念,我们常说的MVC方式,javabean就是简单的体现者。

我们这个程序建立了四个类:分别是StudentMain(界面和响应事件的类)StudentScore(数据保存类)Compute(计算总分和平均分的类)Results(保存计算结果的类)。其中StudentScore和Results就是标准的JavaBean类。他们只有get和set方法,用于其他类对他们进行数据的读取和存储。

这里要注意一点,当我们使用JavaBean模式的时候,那么一定要传递一个该对象的引用以保持他们传递数据的一致性。什么意思呢,打个比方,现在我要在TestPass这个类里面调用Bean的一个set方法保存一个数据,并在TestPass1这个类里面获得该数据并加以计算。那么我们应该这么做:

public class TestPass{

int a = 1;  //初始化a的值为1

public TestPass(){

test();

}

public void test(){

TestPass1 tp1 = new TestPass1();//创建TestPass1类的对象

Bean bean = new Bean(); //创建javabean类的对象

bean.set(a);   //将a属性的值传递给javabean

tp1.change(bean);  //调用TestPass类的方法进行数据操作,传      //递当前bean对象给该方法

System.out.println(bean.get()); //取得javabean里的值并输出

}

public static void main(String [] args){

new TestPass();

}

}

class TestPass1{

public void change(Bean bean){

bean.set(bean.get()+10); //获得传递过来对象的属性,该对象是       //javabean类的实例,通过计算后将值

//通过set方法传递回javabean

}

}

class Bean{     //标准javaBean模式,通过set和get方法接收      //和传递数据,在两个类中起到中间件作用

int a1;

public void set(int a){

a1 = a;

}

public int get(){

return a1;

}

}

java事件编程_java基础 ---Swing事件编程相关推荐

  1. java 并发 异步_Java并发 CompletableFuture异步编程的实现

    前面我们不止一次提到,用多线程优化性能,其实不过就是将串行操作变成并行操作.如果仔细观察,你还会发现在串行转换成并行的过程中,一定会涉及到异步化,例如下面的示例代码,现在是串行的,为了提升性能,我们得 ...

  2. java事件大全_Java sctipt常用事件汇总介绍

    描述 鼠标单击事件 ondblclick 鼠标双击事件 onmouseover 鼠标移入事件 onmouseout 鼠标移出事件 onmousemove 鼠标移动事件 onmousedown 鼠标按下 ...

  3. java选填_java基础填空选择题

    Core Java试题 选择填空题:全部为多选题,只有全部正确才能得分. 1. 编译java程序的命令是__B_;运行java程序的命令是____A____;产生java文挡的命令是_____D___ ...

  4. 如何自学python编程-零基础如何自学编程?

    如果你正在自学编程和代码,并苦于没有优质资源,那么我就找对了地方. 接下来给你介绍21个免费学习写代码的网站,在办公室里或在家里即可轻松学编程. 编程初学者必必必必必必!看! 马!上!打包收藏这21个 ...

  5. java魔兽猎人_Java基于Swing实现的打猎射击游戏代码

    package Game; import static java.lang.Math.random; import java.awt.*; import java.awt.event.*; impor ...

  6. 怎么自学python编程-零基础如何自学编程?

    原标题:零基础如何自学编程? 对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真 ...

  7. java 绘制长方形_Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)...

    控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; ...

  8. java 证书管理系统_JAVA基础应用:单机版管理系统源代码

    package jettang; import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing. ...

  9. java国际象棋棋牌_java使用swing绘制国际象棋棋盘

    本文实例为大家分享了java使用swing绘制国际象棋棋盘的具体代码,供大家参考,具体内容如下 1.完整代码 import java.awt.Color; import java.awt.Point; ...

最新文章

  1. 庖丁解牛Nop:控制反转--IOC和DI
  2. 特斯拉“自动召唤”有软肋!正面识别很厉害,侧面物体看不见,实测差点碾过行人脚面...
  3. Android开发工具GenyMotion安装和使用方法
  4. Django 的工程创建
  5. 苹果前CEO斯卡利变身创业导师:欲寻下个乔布斯
  6. URI,URL与URN的区别
  7. 一个C++工程CPU占用100%问题的排查
  8. C++之 把字符串作为宏参数
  9. 怎样让AI完成人类搞不定的任务?OpenAI提出迭代扩增法给AI设目标
  10. MySQL 5.6 关于登陆的初始化设置
  11. paip.语义分析--单字词形容词表180个
  12. 扒一扒「清华系」的 AI 安防大佬们
  13. 请问下面这段代码哪里有错? private static final String s=
  14. Typora图床设置
  15. python增删改查mysql_python之mysql的增删改查
  16. python交换数组中的两个元素_Python 交换数组元素
  17. 虚拟机共享目录添加按钮灰色_共享按钮将成为PS4最重要的遗产
  18. 如何将多个文本文档合并到一个文档中?
  19. 数通运营商方向常见面试问题(第五部分)
  20. 如何添加新行到表格的最上面(困扰很久的一个问题)(转载)

热门文章

  1. 构造函数 构造代码块_构造函数必须没有代码
  2. 如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼
  3. 医疗保健数据接口_应用的大数据:医疗保健的经济学
  4. git maven 发布_Maven Git发布
  5. [即将举行的网络研讨会]对Kubernetes进行故障排除:您需要具备的7个关键组件
  6. akka使用_使用Akka简化交易系统
  7. 拥抱模块化Java平台:Java 10上的Apache CXF
  8. 实现threadlocal_ThreadLocal如何实现?
  9. 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?
  10. 平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术