201711671212 《JAVA程序设计》第九周学习总结

教材学习内容总结

本周学习内容:第9章 组件及事件处理

1.JavaSwing概述:

  • 组件:Componet类的子类或间接子类创建的对象。
  • 容器:Container的子类或间接子类创建的对象。
  • add()方法:将组件添加到容器中。
  • removeAll()方法:移掉容器中的所有组件。
  • 可以吧一个容器添加到另一个容器中实现容器的嵌套。
  • validate()方法:保证容器中的组件能正确显示出来。

2.窗口

  • JFrame创建一个无标题的窗口。
  • 窗口默认被系统添加到显示器屏幕上,不允许将一个窗口添加到另一个容器中。
  • 许多JFrame常用方法
  • 1)public void setBounds(int a,int b,int width,int height 设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。

    2)public void setSize(int width,int height) 设置窗口的大小。

    3)public void setLocation(int x,int y) 设置窗口的位置,默认位置是(0,0)

    4)public void setVisible(boolean b) 设置窗口是否可见,窗口默认是不可见的。

    5)public void setResizable(boolean b) 设置窗口是否可调整大小,默认可调整大小。

     6)public void dispose() 撤消当前窗口,并释放当前窗口所使用的资源。

     7)public void setExtendedState(int state) 设置窗口的扩展状态.

     8)public void setDefaultCloseOperation(int operation)  该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。如:EXIT_ON_CLOSE 

     9)public void setLayout(LayoutManager mgr) 设置此容器的布局管理器。 

    10)public Component add(Component comp) 将指定组件追加到此容器的尾部。

     11)public void setMenuBar(MenuBar mb) 将此 frame 的菜单栏设置为指定的菜单栏。

    12)public void validate() 使用 validate 方法会使容器再次布置其子组件。在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。
     

  • 菜单放在菜单条例,菜单项放在菜单里。

3.组件与布局

常用组件(都是JComponent的子类) 作用
JTextField(文本框) 允许用户在文本框中输入单行文本
JTextArea(文本区) 允许用户在文本区中输入多行文本
JButton(按钮) 允许用户单击按钮
JLabel(标签) 标签为用户提供提示信息
JChexkBox(复选框) 为用户提供多项选择
JRadioButton(单选按钮) 为用户提供单项选择
JComboBox(下拉列表) 为用户提供单项选择
JPasswordField(密码框) 允许用户在密码框中输入单行密码,默认回显字符“*”。
常用容器 作用
JPanel面板 创建面板(默认布局:FlowLayout布局)
JTabbedPane选项卡窗格

可作为中间容器(中间容器必须被添加到底层容器才能发挥作用)

JScrollPane滚动窗格

只可以添加一个组件,通过滚动来查看该组件

JSplitPane拆分窗格

水平拆分(拆分线水平移动)和垂直拆分(拆分线垂直移动)

JLayeredPane分层窗格 处理组件重叠问题
常用布局(控制组件在容器中的位置) 作用
FlowLayout布局 创建居中对齐的布局现象
BorderLayout布局 容器空间被划分为东、西、南、北、中5个区域,中间的区域最大
CardLayout布局

容纳多个组件,最先加入的在最上面,同一时刻容器只能显示一个组件

GridLayout布局 将容器划分成若干行若干列的网格区域
null布局 可以准确定位组件在容器中的位置和大小
BoxLayout布局 利用容器的嵌套,将某个容器嵌入几个盒式容器

 

4.处理事件

(1)处理事件的接口:

          监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用接口中一个方法来处理事件。

(2)AcitionEvent事件

  • ActionEvent事件源 : 文本框、按纽、菜单项、密码框和单选按纽都可以触发ActionEvent事件,即都可以成为ActionEvent事件的事件源。

  • 注册监视器: ActionListener接口作为监视器;事件源.addActionListener(ActionListener listen);将实现ActionListener接口的类的实例注册为事件源的监视器。

  • ActionListener接口:重写接口中的方法作为事件处理。

  • ActionEvent类中的方法:下面的方法能够获取发生动作的事件源。

(3)ItemEvent事件

  • ItemEvent事件源 :选择框、下拉列表都可以触发ItemEvent事件。
  • 注册监视器:ItemListener接口作为监视器。
  • ItemListener接口:重写方法作为事件处理。
  • ItemEvent类中的方法 :

        getSource()方法返回发生Itemevent事件的事件源外

        getItemSelectable()方法返回发生Itemevent事件的事件源。

(4)DocumentEvent事件

  • DocumentEvent事件源 :文本区所维护的文档能触发DocumentEvent事件 。
  • 注册监视器:DocumentListener作为监视器。
  • DocumentListener接口:重写接口中的方法作为事件处理。

(5)MouseEvent事件

  • 使用MouseListener接口可以处理以下5种操作触发的鼠标事件

        在事件源上按下鼠标键、在事件源上释放鼠标键、在事件源上击鼠标键、鼠标进入事件源、鼠标退出事件源。

  • 注册监视器:MouseListener接口作为监视器

         事件源.addMouseListener(MouseListener listener)。

  • MouseListener接口中有如下方法:重写方法作为事件源的处理

       mousePressed(MouseEvent) 负责处理在组件上按下鼠标键触发的鼠标事件

       mouseReleased(MouseEvent) 负责处理在组件上释放鼠标键触发的鼠标事件

       mouseEntered(MouseEvent) 负责处理鼠标进入组件触发的鼠标事件

       mouseExited(MouseEvent) 负责处理鼠标离开组件触发的鼠标事件

       mouseClicked(MouseEvent) 负责处理在组件上单击鼠标键触发的鼠标事件

  • MouseEvent 中有下列几个重要的方法:

         getX() 获取鼠标指针在事件源坐标系中的x-坐标。

         getY() 获取鼠标指针在事件源坐标系中的y-坐标。

         getModifiers() 获取鼠标的左键或右键。

         getClickCount() 获取鼠标被单击的次数。

         getSource() 获取发生鼠标事件的事件源。

(6)焦点事件

  • 焦点事件源 :组件可以触发焦点事件。
  • 注册监视器:addFocusListener(FocusListener listener)。
  • FocusListener接口 : 创建监视器的类必须要实现FocusListener接口。

     public void focusGained(FocusEvent e)   public void focusLost(FocusEvent e)

  • 获得输入焦点:public boolean requestFocusInWindow( ) 方法。

(7)键盘事件

  • 某个组件使用addKeyListener方法注册监视器。
  • 接口KeyListener中有如下方法:

      public void keyPressed(KeyEvent e),

      public void keyTyped(KeyEvent e),

      public void KeyReleased(KeyEvent e)  

  • 相关方法:

       public int getKeyCode()判断哪个键被按下、敲击或释放,返回一个键码值 。     

       getKeyChar()判断哪个键被按下、敲击或释放,返回键上的字符。

(8)窗口事件

方法 作用
 public void windowActivated(WindowEvent e) 当窗口从非激活状态到激活时,窗口的监视器调用该方法。
public void windowDeactivated(WindowEvent e) 当窗口激活状态到非激活状态时,窗口的监视器调用该方法。
public void windowClosing(WindowEvent e) 当窗口正在被关闭时,窗口的监视器调用该方法。
public void windowClosed(WindowEvent e) 当窗口关闭后,窗口的监视器调用该方法。
public void windowIconified(WindowEvent e)  当窗口图标化时,窗口的监视器调用该方法。
public void windowDeiconified(WindowEvent e) 当窗口撤消图标化时,窗口的监视器调用该方法。
public void windowOpened(WindowEvent e) 当窗口打开时,窗口的监视器调用该方法。

(9)事件总结

  • 授权模式: Java的事件处理是基于授权模式,即事件源调用调用方法将某个对象注册为自己的监视器。
  • 接口回调:  addXXXListener(XXXListener listener)方法中的参数是一个接口,listener可以引用任何实现了该接口的类所创建的对象,当事件源发生事件时,接口listener立刻回调被类实现的接口中的某个方法。
  • 方法绑定:当事件源触发事件发生后,监视器准确知道去调用哪个方法。
  • 保持松耦合:当事件源触发事件发生后,系统知道某个方法会被执行,但无须关心到底是哪个对象去调用了这个方法,因为任何实现接口的类的实例(做为监视器)都可以调用这个方法来处理事件。 

(10)使用MVC结构 

  • 模型(model)  用于存储数据的对象。

  • 视图(view)   为模型提供数据显示的对象。

  • 控制器(controller)处理用户的交互操作,对于用户的操作作出响应,让模型和视图进行必要的交互,即通过视图修改、获取模型中的数据;当模型中的数据变化时,让视图更新显示。

参考资料

  • Java 2 实用教程(第5版)

你可能感兴趣的:(Java)