Swing组件通常触发的事件及对应监听器
javagui知识点总结

javagui知识点总结一、Swing GUI组件Swing是Java中用于创建GUI的一套组件库,它提供了丰富的GUI组件,包括按钮、文本框、标签、列表框、表格等等。
这些组件可以通过代码进行创建、配置和操作,从而构建出丰富多彩的用户界面。
Swing组件还支持丰富的外观和行为定制,可以通过设置各种属性和监听器来满足不同的需求。
1.1 按钮(Button)按钮是Swing中最基本的GUI组件之一,它通常用于触发某个操作或事件。
在Swing中,按钮可以通过JButton类来创建,可以设置按钮的文本、图标、颜色、大小、位置等属性,并为按钮添加各种监听器来处理用户的点击事件。
1.2 文本框(TextField)文本框用于接受用户的输入,可以通过JTextField类来创建,可以设置文本框的默认文本、颜色、大小、位置等属性,并通过添加文本变化监听器来实时监测用户的输入。
1.3 标签(Label)标签用于显示静态文本信息,可以通过JLabel类来创建,可以设置标签的文本、字体、颜色、大小、位置等属性,还可以通过添加鼠标事件监听器来实现交互式标签。
1.4 列表框(ListBox)列表框用于显示一组选项供用户选择,可以通过JList类来创建,可以设置列表框的选项、颜色、大小、位置等属性,并为列表框添加选择事件监听器来处理用户的选项选择。
1.5 表格(Table)表格用于显示和编辑二维数据,可以通过JTable类来创建,可以设置表格的数据模型、列模型、传输器、颜色、大小、位置等属性,并为表格添加各种监听器来处理表格的编辑和选择事件。
二、事件处理在Java GUI编程中,事件处理是至关重要的一部分,它用于实现用户界面和用户交互的逻辑。
Swing组件提供了丰富的事件类型,包括鼠标事件、键盘事件、焦点事件、窗口事件等等,开发人员可以通过添加事件监听器来处理这些事件,从而实现用户交互的各种效果。
2.1 事件监听器(EventListener)事件监听器是一种特殊的接口,用于监听和处理特定类型的事件。
Swing事件大全

Swing中的事件处理监听器:ActionListener方法:actionPerformed事件:ActionEvent● String getActionCommand()actioncommand是控件内部的一个字符串,用于标识控件的状态。
此函数可以取得控件的状态,从而决定到底该做什么。
● int getModifiers()取得“产生此事件时,用户同时按下的组合键”● long getWhen()取得“产生此事件时的时间戳”事件产生原因:点击按钮,在列表框中选择内容,在文本框中点回车,计时器到期监听器:AdjustmentListener方法:adjustmentValueChanged事件:AdjustmentEvent● Adjustable getAdjustable()adjustable是一个接口,各种滚动条都实现了这个接口。
● int getAdjustmentType()取得滚动类型,共有UNIT_INCREMENT,UNIT_DECREMENT,BLOCK_INCREMENT,BLOCK_DECREMENT,TRACK共5种类型● int getValue()取得滚动滑块的当前值事件产生原因:滚动条的滚动监听器:ItemListener方法:itemStateChanged事件:ItemEvent● Objedt getItem()取得被选中的元素。
注意,返回值是Object,还应该进行强制类型转换。
● ItemSelectable getItemSelectable()ItemSelectable是一个接口,代表那些包含了n个可供选择的子元素的对象。
此方法返回产生此事件的对象。
此方法的作用主要在于,如果一个列表框是允许多选的,那么上面的方法就不好用了,应该用此方法得到列表对象,再取得被选中的多个元素。
● int getStateChange()取得选择的状态,是SELECTED还是DESELECTED事件产生原因:各种按钮的点击,列表框的选择监听器:FocusListener方法:focusGained、focusLost事件:FocusEvent● Component getOppositeComponent()得到“参与焦点变换的”另一个对象。
Swing常用控件

作业1:实现计算器程序界面
提示:计算器界面分为两个部分,文本框和 键盘区。对于键盘区,使用网格布局非常方 便。
作业2 测试密码是否正确
任务:输入用户名和密码,如果正确则正常登 录,否则,登录失败。 提升: 记录用户登录次数,如果超过指定次数,则 在一定时间内不能进行登录。
复选框和单选按钮
复选框和单选按钮具有很多相似的地方,它 们在实际开发中也经常要使用到。例如需要 用户来选择兴趣爱好时,一般都很少是只有 一个爱好的,这里就可以创建复选框来实现 其功能,来让用户进行多项选择操作。 但是例如性别等信息,是不可能存在多个选 择的,它只能在有限的几个选项中选择其中 一个,这里就可以使用单选按钮。
因此swing为菜单的开发提供了良好的支持通过swing中提供的菜单系列控件好的支持通过swing中提供的菜单系列控件开发人员可以非常方便地开发出各种各样的菜单本节将对swing中菜单的开发进行详细的介绍
Swing常用控件
如果在超市中只卖一种商品,那就会非常单 一的。在上一章学习布局管理器时就有这样 的感觉,都是使用按钮控件来进行举例说明, 这就好像超市中只卖一种商品。 在本章中就来为超市中提供更多的商品,在 Swing中也就是更多的控件。控件是使界面内 容丰富的一个必不可少的一部分,在Swing中 的控件除了按钮之外,还包括文本框、复选 框、单选按钮和菜单等很多内容。
菜单(JMenu)是标题栏下面的一行文字部分。 菜单是应用程序中最常用的组件。菜单的组 织方式为:一个菜单条JMenuBar包含多个菜 单项(JMenuItem)。JMenuItem有两个子类, 分别为JRadioButtonMenuItem及 JCheckBoxMenuItem用于表示单选菜单项和复 选菜单项。当用户选择某个菜单项后,就会 触发一个ActionEvent时间,由 ActionListener监听器处理。
JavaSwing中处理各组件事件的一般步骤完整版

J a v a S w i n g中处理各组件事件的一般步骤集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。
2.将该组件添加到相应的面板(如JPanel)。
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。
但人们通常用二种方法。
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。
该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。
通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。
首先,我们利用单个监听器来实现该程序。
我们定义一个名为Simple1的类来包括所有代码。
所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。
以下是代码:import .*;import .*;public class Simple1{private static JFrame frame;dd(myPanel);();(true);}}让我们来看看以上代码是如何工作的。
在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。
相应的变量Frame,button1,button2定义在程序的开头部分。
在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。
JavaSwing实战(二)下拉菜单组件JComboBox及其事件监听

JavaSwing实战(⼆)下拉菜单组件JComboBox及其事件监听接下来给”数据源配置“⾯板添加下拉框。
/*** @author: lishuai* @date: 2018/11/26 13:51*/public class WeimingSyncApplets {public static void main(String[] args) {// ⾯板组件JPanel taskPanel = new JPanel();JPanel dbPanel = new JPanel();JTabbedPane tabbedPane = buildJTabbedPane(taskPanel, dbPanel);buildFrame(tabbedPane);}private static JTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {// 选项卡⾯板JTabbedPane tabbedPane = new JTabbedPane();// 通过BorderFactory来设置边框的特性tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));tabbedPane.add("执⾏任务", taskPanel);tabbedPane.add("数据源配置", dbPanel);dbPanel.add(buildJLabel("数据库类型", 10, 20, 80, 25));String dbs[] = {"mysql", "oracle", "sqlserver"};dbPanel.add(buildJComboBox("mysql", "mysql", dbs, 0, 100, 20, 165, 25));return tabbedPane;}private static void buildFrame(JComponent component) {// 窗体容器JFrame frame = new JFrame("数据同步⼯具");frame.add(component);// JFrame.EXIT_ON_CLOSE 退出// JFrame.HIDE_ON_CLOSE 最⼩化隐藏frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);// 设置布局frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(BorderLayout.CENTER, component);// 设置窗⼝最⼩尺⼨frame.setMinimumSize(new Dimension(1060, 560));// 调整此窗⼝的⼤⼩,以适合其⼦组件的⾸选⼤⼩和布局frame.pack();// 设置窗⼝相对于指定组件的位置frame.setLocationRelativeTo(null);frame.setVisible(true);// 设置窗⼝尺⼨是否固定不变frame.setResizable(true);}private static JComboBox buildJComboBox(Object selectedItem, String name, String[] elements, int selectedIndex, int x, int y, int width, int height) {DefaultComboBoxModel codeTypeModel = new DefaultComboBoxModel();// elements 下拉框中的选项for (String element : elements) {codeTypeModel.addElement(element);}JComboBox codeTypeBox = new JComboBox(codeTypeModel);codeTypeBox.setName(name);// 默认选中的下拉框选项codeTypeBox.setSelectedItem(selectedItem);// codeTypeBox.setSelectedItem(selectedIndex);codeTypeBox.setBounds(x, y, width, height);// 添加下拉框事件监听器codeTypeBox.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {if (e.getStateChange() == ItemEvent.SELECTED) {// 选择的下拉框选项System.out.println(e.getItem());}}});return codeTypeBox;}private static JLabel buildJLabel(String name, int x, int y, int width, int height) {JLabel label = new JLabel(name);label.setBounds(x, y, width, height);return label;}}效果如下:下拉框选中对象改变时,监听器监听到事件:。
swing组件及事件

SwingX终于发布了1.6.1版本,与1.6正式版的发布已相隔7个月之久!7.1 Swing入门Swing是一个带有丰富组件的图形用户界面GUI(Graphical User Interfaces)工具包,是Sun 公司在Java 1.2中推出的新的用户界面库。
Swing相对于Java 1.0推出的AWT来说,Swing 不仅仅是AWT所提供的组件的替代品,Swing的功能更强大,使用更方便。
Swing继承AWT,Swing中的类是纯Java编写的,不依赖任何具体的操作系统,可以跨平台使用。
Javax.swing包中有4个最重要的类,它们是JFrame、JApplet、JDialog、JComponent类。
同时Swing提供了40多个组件,Swing的所有组件都是以字母“J”开头,如JButton,JCheckBox 等。
Swing中的JApplet、JFrame、JDialog组件属于顶层容器组件。
在顶层容器下是中间容器,它们是用于容纳其他的组件的组件,如JPanel、JScrollPane等面板组件都是中间容器。
其他组件JButton、JCheckBox等基础组件必须通过中间容器放入顶层容器中。
7.2 Swing的几个重要类7.2.1 JFrame框架JFrame是带标题的顶层窗口。
Swing组件不能直接添加到顶层容器中,它必须通过与Swing顶层容器相关联的内容面板(content pane)来添加组件。
对JFrame添加组件有两种方式:1. 用getContentPane()方法获得JFrame的内容面板,再对其加入组件。
2. 建立一个JPanel之类的中间容器,把组件添加到中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板。
JFrame常用的构造函数为:JFrame() 建立一个没有标题的窗口。
JFrame(String title) 建立一个指定标题的窗口。
Java Swing中处理各组件事件的一般步骤

Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。
2.将该组件添加到相应的面板(如JPanel)。
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。
但人们通常用二种方法。
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。
该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。
通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。
首先,我们利用单个监听器来实现该程序。
我们定义一个名为Simple1的类来包括所有代码。
所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。
以下是代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Simple1{private static JFrame frame; // 定义为静态变量以便main使用private static JPanel myPanel; // 该面板用来放置按钮组件private JButton button1; // 这里定义按钮组件private JButton button2; // 以便让ActionListener使用public Simple1() // 构造器, 建立图形界面{// 新建面板myPanel = new JPanel();// 新建按钮button1 = new JButton("按钮1"); // 新建按钮1button2 = new JButton("按钮2");SimpleListener ourListener = new SimpleListener();// 建立一个actionlistener让两个按钮共享button1.addActionListener(ourListener);button2.addActionListener(ourListener);myPanel.add(button1); // 添加按钮到面板myPanel.add(button2);}private class SimpleListener implements ActionListener{public void actionPerformed(ActionEvent e){// 利用getActionCommand获得按钮名称// 也可以利用getSource()来实现// if (e.getSource() ==button1)String buttonName = e.getActionCommand();if (buttonName.equals("按钮1"))JOptionPane.showMessageDialog(frame,"按钮1 被点击");else if (buttonName.equals("按钮2"))JOptionPane.showMessageDialog(frame,"按钮2 被点击");elseJOptionPane.showMessageDialog(frame,"Unknown event" );}}public static void main(String s[]){Simple1 gui = new Simple1(); // 新建Simple1组件frame = new JFrame("Simple1"); // 新建JFrame// 处理关闭事件的通常方法frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.exit(0);} });frame.getContentPane().add(myPanel);frame.pack();frame.setVisible(true);}}让我们来看看以上代码是如何工作的。
Java Swing编程-3

本章任务
完成超市管理系统的登录验证
本章目标
了解Swing的事件处理机制 掌握使用ActionListener实现监听
JButton JMenuItem
掌握使用ItemListener实现以下监听
JRadioBox JComboBox
事件处理机制
事件授权处理机制:对组件注册事件监听,当有某 个动作触发了这个该事件后,Java运行时系统将调 用对应的方法响应该操作。
实现JCombox事件
修改T13中的案例,当我们修改了学历的时候, 能得到修改后的学历值
实现JCombox事件
实现思路与JRadionButton的是一样的,也 通过ItemEvent事件来实现
但稍微不同的是, JCombox是在同一个组件 上的选项值发生了变化,为了避免两次状态 转变的触发效果,所以我们在得到值的时候 要进行判断
T 14
Swing编程3 实现事件监听
回顾
1. 如何实现性别(男,女)单选按钮? 2. 如何实现下拉框选项?创建方式有那几 种? 3. 窗体中的菜单有那几部分组成?他们之 间的关系是什么? 4. 如何将一个菜单栏添加到一个窗体中?
预习检查
1.常用的事件类型有那几种? 2.如何实现事件监听,请描述下实现思路?
ActionEvent
ActionEvent事件是激活事件,当在单击 JButton,JMenuItem,JList组件的时候触发该 事件; 该事件中提供的常用方法
public object getSource( )
• 返回触发该事件的对象
public String getActionCommand( )
• 返回触发该事件的对象内容text;
ActionEvent