Java(六)-组件&事件处理(概括)

概述

java.awt包提供设计GUI的组件类(包含Container类,Component类)  
javax.swing包提供更强大的组件类(包含JComponent类) 

Component类的子类/间接子类创建的对象是组件  
Container类的子类/间接子类创建的对象是容器(本身也是组件)  

add()方法将组件添加到容器  
remove(Component c)方法移除c组件  
removeAll()方法移除容器中的全部组件  
validate()方法保证组件的显示

窗口

实例
窗口JFrame
菜单条JMenubar
菜单JMenu
菜单项JMenuItem
图标ImageIcon

注:
不允许将一个窗口添加到另一个容器中
窗口只能添加一个菜单条
菜单本身也是一个菜单项

对话框

 有模式(激活时,只响应对话框内部事件) 
 无模式(激活时,能再激活其它窗口,也不阻塞其他线程)  
  1. 消息对话框(有模式)
    用JOptionPane类的showMessageDialog方法创建

  2. 输入对话框(有模式)
    用JOptionPane类的showInputDialog方法创建

  3. 确认对话框(有模式)
    用JOptionPane类的showConfirmDialog方法创建

  4. 颜色对话框(有模式)
    用JColorChooser类的showDialog方法创建

  5. 自定义对话框
    用JDialog的子类来建立,默认布局是BorderLayout,可添加组件,不允许将对话框添加到另一个容器


组件

1.常用组件

组件组件
文本框JTextField标签JLabel
文本区JTextArea选择框JCheckBox
按钮JButton单选按钮JRadioButton
下拉列表JComboBox密码框JPasswordField

2.树组件

  • 构造:
    javax.swing.tree包的DefaultMutableTreeNode类可以构造结点(任何实现MutableTreeNode接口的类创建的对象都可以成为结点);JTree类构造根节点是root的树组件
  • 事件:
    注册监视器:addTreeSelectionListener(TreeSelectionListener listen)
    TreeSelectionListener接口:有valueChanged(TreeSelectionEvent e)方法

3.表格组件

【最复杂,以后再补】

4.打印组件

  1. 调用getToolkit()返回系统提供的Toolkit对象的引用(当有组件时系统自动提供Toolkit子类的对象)
  2. 让Toolkit对象调用getPrintJob()返回一个PrintJob对象
  3. 让PrintJob对象调用getGraphics()获得Graphics对象
  4. 让Graphics对象调用paintAll(g)/paint(g)打印组件(总是从左上角开始打印)
  5. 可让Graphics对象调用translate(int x,int y)改变打印位置

常用容器

容器用法备注
面板JPanel默认布局FlowLayout
滚动窗格JScrollPanenew JScrollPane(Component c)通过滚动条观看组件
拆分窗格JSplitPaneJSplitPane(int a,Component b,Component c)可分水平拆分和垂直拆分
分层窗格JLayeredPaneadd(Jcomponent com,int layer)重叠,分为5层

常用布局

布局备注
FlowLayout是JPanel型容器的默认布局,按顺序从左向右,一行满后换行,间隙5像素,默认居中排列
BorderLayout是Window型容器的默认布局,空间分为东西南北中,每个区域只能放置一个组件,可以嵌套
CardLayout组件层叠放入,依次向下
GridLayout把容器划分为m×n的网格区域
BoxLayout在javax.swing.border包中,组件排列在一行/列,只有一行/列
null可以准确定位容器的位置和大小

处理事件

监视器可用窗口,也可用匿名类

1. ActionEvent事件

  • 事件源:文本框、按钮、菜单项、密码框、单选按钮
  • 注册监视器:addActionListener(ActionListener listen)
  • ActionListener接口:在java.awt.event包中,只有一个actionPerformed(ActionEvent e)方法

2. ItemEvent事件

  • 事件源:选择框、下拉列表
  • 注册监视器:addItemListener(ItemListener listen)
  • ItemListener接口:在java.awt.event包中,只有一个itemStateChanged(ItemEvent e)方法

3. DocumentEvent事件

  • 事件源:文本区所维护的文档内容产生变化
  • 注册监视器:addDocumentListener(DocumentListener listen)
  • DocumentListener接口:在java.swing.event包中,有三个方法:
    1. public void changedUpdate(DocumentEvent e)
    2. public void removeUpdate(DocumentEvent e)
    3. public void insertUpdate(DocumentEvent e)

4. MouseEvent事件

  • 事件源:任何组件
  • 注册监视器:addMouseListener(MouseListenr listen)
  • MouseListenr接口:
    • 按下 mousePressed(MouseEvent)
    • 释放 mouseRelesed(MouseEvent)
    • 单击 mouseClick(MouseEvent)
    • 进入 mouseEntered(MouseEvent)
    • 退出 mouseExited(MouseEvent)
  • MouseMotionListenr接口:
    • 拖动 mouseDragged(MouseEvent)
    • 移动 mouseMoved(MouseEvent)

5.焦点事件

  • 事件源:任何组件
  • 注册监视器:addFocusListener(FocusListener listen)
  • FocusListener接口:
    • focusGained(FocusEvent e)
    • focusLost(FocusEvent e)

6.键盘事件

  • 事件源:键盘操作
  • 注册监视器:addKeyListener(KeyListener listen)
  • KeyListener接口:
    • keyPressed(KeyEvent e)
    • keyType(KeyEvent e)
    • keyReleased(KeyEvent e)

7.窗口事件

  • 事件源:所有Window子类创建的对象
  • 注册监视器:addWindowListener(WindowListener listen)
  • WindowListenr接口:
    • 激活 windowActivated
    • 非激活 windowDeactivated
    • 正关闭 windowClosing
    • 关闭后 windowClosed
    • 图标化 windowIconified
    • 撤销图标化 windowDeiconified
    • 打开时 windowOpened
  • WindowAdapter适配器:代替接口来处理,不用给出所有方法实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值