day08.组件,事件处理

目录

1,窗口

(1)JFrame

add( )方法:向容器中添加组件或者容器

(2)菜单

2,常见组件

JTextField

JTextField

JButton

JTextArea

JLabel

JPasswordField

JChechBox

JRadioButton

ButtonGroup

JComboBox

3,组件布局

(1) FlowLayout:

(2) BorderLayout:

(3) CardLayout:

(4) GridLayout

4,事件处理

(1)ActionEvent事件源 :

(2)监听器:

(3)常见事件源、事件、事件监听器、处理方法:

1️⃣ItemEvent :

2️⃣DocumentEvent:

3️⃣MouseEvent

4️⃣KeyEvent

5️⃣WindowEvent

适配器:

5.对话框

(1)基本概念

(2)消息对话框

(3)输入对话框

(4)确认对话框

(5)颜色对话框

6.表格

(1)表格组件

(2)Vector



AWT(Abstract Windows Toolkit)是Java中支持图形化用户界面GUI设计的一个工具集。

1,窗口

(1)JFrame

JFrame类的实例是一个底层容器,即通常所称的窗口。

  • 相关包:java.awt  (java.awt.event)   和 javax.swing⭐️
import java.awt.*;   
import javax.swing.*;
import java.awt.event.*;
java.awt包
java.awt.accessibility提供辅助功能:放大屏幕,语音识别
java.awt.color定义颜色
java.awt.datatransfer提供数据传输与剪贴板功能
java.awt.dnd图形化用户界面实现拖拽功能
java.awt.event提供事件类与监听器类
java.awt.font提供各种字体
java.awt.geom几何软件包
java.awt.im引入方法
java.awt.image图像处理的类
java.awt.peer同位体组件,界面
java.awt.print打印功能

  • 图形用户界面都是从定义JFrame开始的。

    窗口刚被创建时

    初始大小为(0,0),

    不可见,用setVisible(true)设置为可见, setSize(int,int)设置其大小。

  • JPanel 面板:

先向这个面板添加组件,再把面板添加到其它容器中。JPanel面板的默认布局是FlowLayout布局

  • JScrollPane滚动窗格:

可以将文本区放到一个滚动窗格中。 JScrollPane scroll=new JScrollPane(new JTextArea()); 

 

add( )方法:向容器中添加组件或者容器

(2)菜单

  • 菜单条JMenubar 类:

JComponent类的子类JMenubar负责创建菜单条;

JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBar bar),该方法将菜单条添加到窗口的顶端。 

  • 菜单JMenu类:

JMenu负责创建菜单, JMenu类的主要方法有以下几种 :

public void add(JMenuItem item) 向菜单增加由参数item指定的菜单选项。

public JMenuItem getItem(int n) 得到指定索引处的菜单选项。

public int getItemCount() 得到菜单选项的数目。

  • 菜单项JMenuItem类:

负责创建菜单项,主要方法有以下几种:

JMenuItem(String s) 构造有标题的菜单项。

JMenuItem(String text, Icon icon) 构造有标题和图标的菜单项

public void setAccelerator(KeyStroke keyStroke) 为菜单项设置快捷键。

Icon icon=new ImageIcon(“xxx.png”) :利用图片创建图标对象

2,常见组件

按钮:JButton类

文本框:JTextField类

文本区:JTextArea类

标签:JLabel类

密码框:JPasswordField类

复选框:JCheckBox类

单选按钮:JRadioButton类

下拉列表:JComboBox类

组件的类名作用构造方法事件响应

JTextField

单行文本框

1.JTextField( );   

 2.JTextField(int columns)指定列   

3.JTextField(String text)使用text初始化文本框容             

4.JTextField(String text,int columns)指定文本初始化容和列

java.awt.event.ActionListener(接口)         

   —void actionPerformed(ActionEvent e)

JTextField

 text

1.getText( );            

2.setText(String s);                     3.setFont(Font f);设置字体 

4.setEditable (boolean b); 5.setVisiable(boolean b);      6.setEnabled(boolean b);

DocumentEvent,ActionEvent                         
类似的JTextArea类,多行文本域

JButton

按钮

点击时产生事件

1,JButton( )创建一个空按钮

2,JButto(String lable)创建一个有标识的按钮

按钮可以产生多种事件,不过常常

需要响应ActionEvent,为使按钮能

够响应ActionEvent,必须实现

ActionListener接口中的

actionPerformed方法。

JTextArea

多行文本区

1.public JTextArea(String text, int rows, int columns) : 创建一个指定文本、行数、列数的文本区,参数可缺省。

2.public JTextArea()

3.public JTextArea(String text)

4.public JTextArea(int rows,int columns)

  • javax.swing.event.DocumentListener(接口)
  • void changedUpdate(DocumentEvent e)
  • void removeUpdate(DocumentEvent e)
  • void insertUpdate(DocumentEvent e)

常用方法:

1.public void append(String s)

2.public void insert(String s, int index)

JLabel

标签

提供提示信息

1.public JLabel(String text);

2.public JLabel(String s, int alignment);

不引发事件

常用方法:

1.public String getText()

2.public void setText(String s)

3.public void setAlignment(int alignment)

JPasswordField

密码框允许用户接收单行文本-密码,默认显示为“.”

常用方法:

1.public void setEchoChar(char c):设置显示的掩码字符

2.public char[] getPassword():获取实际的密码字符

JChechBox

复选框

1.public JCheckBox ():创建不带字符串、默认未选中的复选框;

2.public JCheckBox (String text);

3.public JCheckBox (String s, boolean selected):指定选中状态

JRadioButton

单选按钮

1.public JRadioButton ():创建不带字符串、默认未选中的复选框;

2.public JRadioButton (String text);

3.public JRadioButton (String s, boolean selected):指定选中状态

ButtonGroup

将多个单选按钮加入到ButtonGroup对象中,同一组的单选按钮具有单选功能

JComboBox

下拉列表框

1.JComboBox ( );

2.JComboBox (Object[] items);

常用方法:

1.public int getItemCount():返回选项功能的数量

2.public Object getSelectedItem():返回当前选中的选项

3,组件布局

  • 常用布局管理器:(安排组件在容器中位置)

FlowLayout        BorderLayout     CardLayout      GridLayout       BoxLayout

  • 设置布局管理器:

container.setLayout(LayoutObject);

container为容器对象

(1) FlowLayout:

  • 按照由左到右、从上到下的顺序布局。
  • 构造方法:

public FlowLayout( )

public FlowLayout(int align)

public FlowLayout(int align, int hgap, int vgap):

(2) BorderLayout:

  • 窗口分成五部分:东区、南区、西区、北区和中央
  • 构造方法:

BorderLayout( );

BorderLayout(int hgap, int vgap); 指定组件之间水平和竖直方向的间隙,默认的间距都是0。

  • 添加组件,最多添加5个组件:

add(index,component) ;

add(component,index) ;

index: 取值East, South, West, North, Center(类常量)。 component :表示被添加的组件

(3) CardLayout:

  • 容纳多个,同一时间只显示一个:

可使容器容纳多个组件,共享同一显示空间;但在同一时刻只能显示若干组件中的一个,这个被显示的组件占据所有的容器区域。

  • 构造方法:

CardLayout()

CardLayout(int hgap, int vgap):指定组件之间水平和竖直方向的间隙,默认的间距都是0。

  • 添加组件:

con.add(String s,Component b) :将组件b添加到容器中,s为该组件在容器中的代号。

  • 显示组件:

card.show(con,s);显示组件s

card.first(con):显示con中的第一个组件

card.last(con)

card.next(con)

card.previous(con)

(4) GridLayout

  • 矩形顺序:

根据构造方法定义的行数和列数以矩阵的形式排列组件,组件按照添加的顺序从左到右排列,从第一行开始,接着第二行;各组件大小相同;

  • 构造方法:

CridLayout()

GridLayout (int rows,int columns):指定行列数的网格,默认的间距都是0。

GridLayout(int row,int columns,int h,int v):指定行列数、组件的水平和垂直间距按指定值设置。

4,事件处理

  • 事件:Java图形用户界面是事件驱动的

在事件驱动程序设计中,激活某个事件时就会执行相应的代码,激活事件可以是点击按钮,也可以是移动鼠标等等

  • 事件处理:什么事件发生后如何处理

在图形界面中:当有某个动作触发了这个组件后,Java运行时系统将调用对应的方法响应这个动作,执行某段代码(方法)。

  • 授权处理模型:指事件的处理,由事件的来源(source,事件源)对象,委托给一个或多个事件监听器(Event Listener)来处理。

授权方法:source.addxxxListener(entListenerObject);

(1)ActionEvent事件源 :

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

  • ActionEvent类常用方法 :

public Object getSource() :获取发生ActionEvent事件的事件源对象名称。

public String getActionCommand() :获取发生事件时,和该事件相关的一个命令字符串,例如按钮上面的标签名称。

(2)监听器:

  • 监听器接口:

监听器接口中定义了处理各种事件的方法,例如动作事件ActionEvent对应的接口是ActionListener。

ActionListener接口 该接口中只有一个方法:

public void actionPerformed(ActinEvent e) 

  • 注册监视器:

能触发ActionEvent的事件源组件使用

addActionListener(ActionListener listen) 将实现ActionListener接口的类的实例注册为事件源的监视器

(3)常见事件源、事件、事件监听器、处理方法:



1️⃣ItemEvent :

  • ItemEvent事件源 :

选择框、下拉列表都可以触发ItemEvent事件

  • 注册监视器:

addItemListener(ItemListener listen)

  • ItemListener接口 :

该接口中只有一个方法: public void itemStateChanged(ItemEvent e)I

  • temEvent类常用方法 :

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

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

2️⃣DocumentEvent:

  • DocumentEvent事件源 :

JTextField、JTextArea所维护的文档,通过组件的getDocument()方法获取事件源。

  • 监听器接口:

DocumentListener

  • 该接口中只有三个方法:

   public void changedUpdate(DocumentEvent e)    
   public void removeUpdate(DocumentEvent e)
   public void insertUpdate(DocumentEvent e)

  • 注册监视器:

source.addDucumentListener(DocumentListener listener)

3️⃣MouseEvent

  • MouseEvent事件源:

任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都触发鼠标事件。

  • MouseEvent 中常用方法:

   getX/Y() 获取鼠标指针在事件源坐标系中的x/y-坐标。
   getButton() 获取鼠标的键,常量BUTTON1/2/3表示左/中/右键。
   getClickCount( )获取鼠标被单击的次数。
   getSource() 获取发生鼠标事件的事件源。

  • 注册监听器:

addMouseListener(MouseListener listener)
addMouseMotionListener(MouseMotionListener listener)

  • 1. MouseListener接口中有如下方法:

   mousePressed(MouseEvent) 在组件上按下鼠标键触发的鼠标事件
   mouseReleased(MouseEvent)在组件上释放鼠标键触发的鼠标事件
   mouseEntered(MouseEvent) 鼠标进入组件触发的鼠标事件
   mouseExited(MouseEvent) 鼠标离开组件触发的鼠标事件
   mouseClicked(MouseEvent)在组件上单击鼠标键触发的鼠标事件

  • 2. MouseMotionListener接口中有如下方法:

   mouseDragged(MouseEvent)  处理拖动鼠标触发的鼠标事件;
    mouseMoved(MouseEvent)  处理移动鼠标触发的鼠标事件;

4️⃣KeyEvent

  • 事件源:

当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件触发键盘事件

  • KeyEvent 中常用方法:

    public int getKeyCode()判断哪个键被按下、敲击或释放,返回一个键码值 ; 
     getKeyChar()判断哪个键被按下、敲击或释放,返回键上的字符;

  • 注册监视器:

source.addKeyListener(KeyListener listener)方法

  • KeyListener接口中常用方法:

    public void keyPressed(KeyEvent e)
    public void KeyReleased(KeyEvent e)
    public void keyTyped(KeyEvent e)
:按下又释放

5️⃣WindowEvent

  • 事件源:

Jframe及其子类创建的窗体,实现窗体打开或者关闭时的相关操作

  • WindowEvent方法:

event.getWindow ():获取发生窗口事件的窗口对象

  • 注册监视器:

source.addWindowListener(WindowListener listener)方法

  • WindowListener接口:

   public void windowActivated(WindowEvent e)
   public void windowDeactivated(WindowEvent e)
   public void windowClosing(WindowEvent e)
   public void windowClosed(WindowEvent e)
   public void windowOpened(WindowEvent e)
   public void windowIconified (WindowEvent e)
   public void windowDeiconified (WindowEvent e)

适配器:

解决实现接口需要实现其所有抽象方法,利用适配器类重写需要的接口方法即可;

WindowAdapter、MouseAdapter、KeyAdapter类:实现了相应接口的所有方法,继承时仅需重写自己需要的方法;

5.对话框

(1)基本概念

对话框:Dialog,分为无模式(默认)和有模式对话框两种

(2)消息对话框

  • 消息对话框:

是有模式对话框,可以使用JOptionPane类的静态方法创建一个消息对话框:
   public static void showMessageDialog(Component parentComponent,String message,String title,int messageType)
参数的含义分别为:位置参照组件,提示消息,标题,消息类型

(3)输入对话框

  • 输入对话框:

含有供用户输入文本的文本框、一个确定和取消按钮,是有模式对话框 。
    public static String showInputDialog(Component parent,Object message,String title,int messageType)
参数的含义分别为:位置参照组件,提示消息,标题,消息类型

点击确定:返回文本框内容的字符串
点击取消:返回null

(4)确认对话框

  • 确认对话框:含两个按钮——是和否,是有模式对话框 。

public static int showConfirmDialog (Component parent,Object message,String title,int optionType)

  • optionType取值有三种:

JOptionPane.YES_NO_OPTION,
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.OK_CANCEL_OPTION

(5)颜色对话框

  • 颜色对话框:

更多的颜色选择

  • 使用JColorChooser类

的静态方法创建一个有模式的颜色对话框 :
public static Color showDialog(Component component,String title,Color initialColor)

6.表格

(1)表格组件

  • 表格:

以行和列的形式显示数据,允许对表格中的数据进行编辑;表格的模型功能强大、灵活并易于执行;使用JTablel类创建;

  • 构造方法:

   JTable(int a,int b) 创建a行,b列的默认模型表格
   JTable (Object data[][],Object  columnName[])

参数含义:data指定的二维数组的值; columnName指定其列名

  • 常用方法:

   getColumnCount():获得数据表列数
   getRowCount()
   repaint():
更新表格显示内容

(2)Vector

  • Vector 类:

实现了一个动态数组,和 ArrayList 很相似,主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

  • 构造方法:

   Vector()
   Vector(int size
)

  • 常用方法:

   void addElement(int index, Object element) : 在此向量的指定位置插入指定的元素
   boolean addElement (Object o) :在末尾添加指定元素
   int capacity() :返回此向量的当前容量
   Object get(int index) :返回向量中指定位置的元素

  • 指定元素类型:

   Vector<Object> var
例: Vector<String> strs;

  • DefaultTableModel类:

创建默认的表控制模型

  • 构造方法:

public DefaultTableModel(Vector<Vector<?>> data, Vector<?> columnNames)

  • 常用方法:

public void insertRow(int row,Vector<Objec o>)
public void removeRow(int row)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值