第十八章 Swing程序设计

18.1Swing概述

        swing主要用来开发GUI(Graphical User Interface)程序,GUI是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮等图形界面元素。

789f3aef08e94928862fd54f71137be9.png      

1.JFrame窗体

JFrame jf=new JFrame();

jf.setTitle("创建一个JFrame窗体");

Container container=jf.getContentPane();

创建窗体后,先调用getContentPane()方法将窗体转换为容器,在调用add()或remove()方法添加或删除容器中的组件。

 JFrame窗体关闭的几种方式

窗体关闭方式实现功能
DO_NOTHING_ON_CLOSE关闭窗体时,不触发任何操作
DISPOSE_ON_CLOSE关闭窗体时,释放窗体资源,窗体会消失但是程序不会停止
HIDE_ON_CLOSE关闭窗体时,仅隐藏舱体,不释放资源
EXIT_ON_CLOSE关闭窗体时,释放窗体资源并关闭程序

3e7be562692649c1b83ac6144f3f3a99.png 

2.JDialog 对话框

JDialong对话框继承了java.awt.Dialog类,其功能是从一个窗体弹出另一个窗体,如使用IE浏览器时弹出的确定对话框JDialog对话框与JFrame窗体类似,被使用也需要先调用getContentPane()方法Jdialog对话捐给转换为容器再对JDialog对话框进行设置

d6a820f1b63b490d94336bcf64f26153.png

 JDialog对话框功能是从一个窗体中弹出另一个窗体

3.自定义对话框

一个非常便捷的小型对话框,该类用于创建对话框的方法都是静态方法,无需创建对象即可弹出,在日常开发中经常使用该类唐初提示确认用户需求  

4种创建对话框的方法

        方法描述
showConfirmDialog()确认框,询问一个确认问题,如yes/no/cancel
showIputDialog()输入框,可以让用户向程序输入某些之
showMessageDialog()通知框,告知用户某事已经发生
showOptionDialog()自定义对话框,集合了上述3种对话框的全部功能

7f6d03284a644d319bb78266f002e81e.png 

确认框

ac47e1a974204c2bb0ea6f5017a34828.png 

输入框

e9d0c2d75c2d406ca1c192b4c017a88d.png 

通知框

ead0bdfc7138419ca0454e194b8d5108.png 

18.3常用布局管理器 

绝对布局也叫做null布局,其特点是影星质地的那个组件在容器中的位置和大小,组件的位置是通过绝对坐标的方式来制定的,使用绝对布局首先要Container.setLayout(null)方法取消容器中的布局管理器,然后再用Componnent,setBounds(int x,int y ,int width ,int height)方法来设置每个组件在容器中的位置和大小,如以下例题所示:

使用绝对布局定位按钮位置和大小:

52f186720285478bb052b8f3cef1c7f6.png 

其特点是硬性指定组件在容器中的大小位置,组件的位置通过绝对坐标的方式来指定,使用绝对布局首先要取消Container.setLayout(null)方法取消容器的布局管理器。 

18.3.2FlowLayout流布局管理器 

a41ade7d2e4247f9aaae8c1d6aaeb50e.png  

使用流布局管理器拜访组件是,组件被从左往右摆放,溢出组件会被移到当前行的下一行

 

3793cf90fd894c3eae8545d5d2ab340e.png

18.3.3 BorderLayout边界布局管理器
容器默认的布局管理器是边界布局(BorderLayout)管理器,边界布局管理器把容器分为东南、西、北、中5个区域,如果使用了边界布局管理器,在向容器中添加组件时,如果不指定要把组件添加到哪个区域那么当前组件会被默认添加到 CENTER 区域; 如果向同一个区域中添加多个组件,那么后放入的组件会覆盖先放入的组件。

bbb76c7a5c5e494584b9fcb5a235d017.png 

 

18.3.4GridLayout网络布局管理器

网络布局管理器(GridLayout)管理器能够把容器划分为网格,组件课按行列进行决定,在网格的大小都相同,例如  一个两行两列的网格布局管理器能够产生4个大小相同的网格,组件从网格的左上角开始按照从左到右,从上到下的顺序来添加到网格中,且每个组件都会被填满整个网格,改变窗体大小时,组件大小也会随之改变 使用方法如下:

代码如下:

b3cd2757304c45dead18d4813477af7c.png

                 18.4常用面板

在Swing程序设计中  面板是一个容器,被用于容纳其他组件但是面板必须添加到其他容器中Swing中常用的面板包括了JPanel面板和JScrollPane面板

18.4.1JPanel面板

JPanel面板继承了java.awt.Container类JPanel面板必须在窗体容器中使用,无法脱离窗体显示

如下例题所示:

ba4c826abc094421ae5efb2df2c5c81b.png

dcc62554aeb94e86ae780e26bb3b9324.png 

18eb419b94a549c7844d55d34d5fb83b.png 

 

18.4.2JScrollPane滚动面板

JScrollPane面板时带动滚动条的面板,是被用于在较小的窗体中先是较大的篇幅内容,需要注意JScrollPane滚动面板不能使用布局管理器,且只能容纳一个组件。如果需要向JScrollPane面板中添加多个组件,那么需要先将多个逐渐添加到JPanel面板,在将JPanel面板添加到滚动面板  实际使用如下:

c70b11a8f2504b438bfffc07349a763d.png

 

18.5文字标签组件与图标

在Swing程序设计中,标签(JLabel)被用于先是文本,图标等内容,在Swing应用程序中用户界面中,用户能通过标签上的文本,图标等内容获得相应的提示信息

18.5.1JLabel标签

baioqain (JLabel)的弗雷什JCompont类,虽然标签不能被添加监听器,但是标签显示的文本图标内容可以被知道那个对齐方式

        通过JLabel类的构造方法们可以创建多种标签,如显示只有文本的标签,只有图标的标签以及同时包含文本和图标的标签等  使用方法如下:

18.5文字标签组件与图标

在Swing程序设计中,标签(JLabel)被用于先是文本,图标等内容,在Swing应用程序中用户界面中,用户能通过标签上的文本,图标等内容获得相应的提示信息

18.5.1JLabel标签

baioqain (JLabel)的弗雷什JCompont类,虽然标签不能被添加监听器,但是标签显示的文本图标内容可以被知道那个对齐方式

        通过JLabel类的构造方法们可以创建多种标签,如显示只有文本的标签,只有图标的标签以及同时包含文本和图标的标签等  使用方法如下:

 
  1. public JLabel();//创建一个不带图标和文本的标签

  2. public JLabel(Icon icon);//创建一个带图标的标签

  3. public JLabel(Icon icon ,int aligment);创建以恶给带图标的标签,并设置图标的水平对齐方式

  4. public JLabel(String text,int aligment);//创建一个带文本标签,并设置文本的水平对齐方式

  5. public JLabel(Icon icon ,String text, int aligment);

  6. //创建一个带文本和图标的JLabel对于宣布发,并设置文本和图标的水平对齐方式

 具体使用方法如下代码所示:

18.5.2图标的使用

在Swing程序设计中,图标经常被添加到标签,按钮组件,使用javax.Swing.ImageIcon类可以根据现有的图片创建图片,UmageIcon类实现了Icon接口,他有多个构造方法  构造方法使用如下:

18.6按钮组件

在Swing程序设计中蛮牛是较见的组件,被用于出发特定的动作  ,Swing提供了多种按钮组件,按钮,单选按钮, 复选框等,

18.6.1JButton按钮
Swing按钮由JButton对象标识JButton常用的构造方法  

JButton类的常用方法以及说明

方法说明
SetIcon(Icon defauItIcon)设置按钮图案
setToolTipText(String text)为按钮设置提示文字
setBorderPainted(boolean b)如果b的值为true且按钮又边框,那么绘制边框borderPainted属性的默认值为true
setEnable(boolean b)这是按钮释放可用。b的值为true时,表示按钮可用;b的值为false时表示按钮不可用

e8aeb5a44d6c43db9dada6f93b633680.png 

​18.6.2JRadioButton单选按钮:

Swing单选按钮由JRadioButton对象表示,在Swing程序设计中,需要把多个单选按钮添加到按钮组中,当用户选中某哥单选按钮时,按钮组中的其他单选按钮将不能被同时选中

创建一个JRadioButton对象需要使用JRadioButton类的构造方法。JRadioButton类常用的构造方法如下:

JButton类的常用方法以及说明

方法说明
SetIcon(Icon defauItIcon)设置按钮图案
setToolTipText(String text)为按钮设置提示文字
setBorderPainted(boolean b)如果b的值为true且按钮又边框,那么绘制边框borderPainted属性的默认值为true
setEnable(boolean b)这是按钮释放可用。b的值为true时,表示按钮可用;b的值为false时表示按钮不可用

18.6.2JRadioButton单选按钮:

Swing单选按钮由JRadioButton对象表示,在Swing程序设计中,需要把多个单选按钮添加到按钮组中,当用户选中某哥单选按钮时,按钮组中的其他单选按钮将不能被同时选中

创建一个JRadioButton对象需要使用JRadioButton类的构造方法。JRadioButton类常用的构造方法如下:

dbd46faf32d54ccd9b4f994632d2d3ab.png

 

18.6.3JCheckBox复选框

复选框组件由JCeckBox对象标识,与单选按钮不同的时,窗体中的复选框可以被选中多个这是因为每一个复选框“被选中”和"不被选中"两种状态:​​​​​​​

18.7列表组件 

Swing中提供两种列表组件,分别是下拉列表框与列表框。下拉列表框与列表框都是带有一系列列表组件,用户可以从中选择需要列表项,列表框较下拉列表框更直观,他将所有的列表向罗列在俩表中,但是,下拉列表框比较列表框更为便捷,美观,他将所有列表项隐藏起来,当用户选用其中列表向才会显现出来

18.7.1JcomboBox第一次使用下拉列表框,会感觉Swing中下拉列表框与Windows系统中下拉列表框有一些相似,实质上两种并不完全相同,因为Swing中下来列表框不仅可以供用户从中选择,也提供了编辑列表项的功能  如下所示:

代码图以及允许结果图:

 

18.8文本组件

文本组件在开发Swing程序过程中经常被用到,尤其是文本框组件和密码框组件,使用文本组件可以轻松的操作单行文字,多行文字口令字段等文本内容

18.8.1JTextField文本框

文本框组件由JFextField对象表示JTextField类的常用构造方法如下:

 
  1. public JTextField();创建一个文本未被指定的文本框

  2. public JTextField(String text);创建一个指定文本的文本框

  3. public JTextField(int fieldwidth);创建一个只当列宽的文本框

  4. public JTextField(String text,int fieldwidth);创建以恶给指定为呢本列宽的文本框

  5. public JTextField(Document docModel,String text,int fieldwidth);

  6. //创建一个定制文本模型,文本内容和列宽的文本框

  7. 代码图以及允许结果图如下:

18.8.2JPasswordField密码框

密码框组件由JPasswordField对象表示,其作用十八用户输入的字符串以某种符号进行加密类的常用构造方法如下JPasswordField类

 

18.9表格组件

Swing表格JTable对象表示 其作用是把数据以表格的形式显示给用户

18.9.1创建表格

JTable类除了提供了默认的构造方法外,还提供了被用于显示二维数组中的元素的构造方法如下所示:

为了实现表格模型创建表格的功能,Swing提供了表格模型,即DefaultTableModel类继承了AbstractTableMode抽象类且显示了上述3个抽象方法类提供了常DefaultTableModel用构造方法

  1. JTable(Object[][] rowDate,Object[]columnNames)

  2. rowDate//存储表格数据的二维数组

  3. cilumnNames;//存储表格列明的一维数组

  4.  代码图以及运行结果图如下:

  5.  

  6. 18.9.2DefultTableModel表格数据模型

    Swing使用TableModel接口定义了一个表格模型 AbstactTableModel抽象类实现了TableModel接口的大部分方法

     
  7. public int getTowCount();

  8. public intgetCikumnCount();

  9. public Object getValueAt(int rowIndex,intcolumnIndex)

  10. 代码图以及运行结果图如下所示:

  11.  

  12.  

  13. 18.9.3维护表模型

    表格中的数据内容要予以维护,如果使用getValueAt()方法获得表格中的某一俄国单元格的值,使用addRow()方法向表格中添加新的行,使用setValueAt()方法修改表格中的某一个单元格的值removeRow()方法从表格中删除指定行等

  14. 代码图以及运行结果图如下:

  15.  

18.1事件监听器

该监听器负责处理用户单击按钮后实现的功能

ActionEvent动作事件

动作时间(ActionEvent)监听器是Swing中比较常用的事件监听器 很多组件的动作都会使用它监听,如下三种

相关定义实现方式相关定义实现方式
事件名ActionEvent添加监听方法addAtionListener()
事件源JButton,Jlist,STextField等组件删除监听方法reniveActuibListener()
监听接口ActionListener  

下面单击按钮事件例子来说明动作时间监听器,当用户单击按钮时,将触发动作事件 如下立体所示:

代码如下:​​​​​​​

46c51d2dad694148a3bf5f26471c4185.png

8c1f9fe1c42f4b6b8cd7ea4c643f6936.png

18.10.2KeyEvent键盘事件

当想文本框中输入内容是,将发生键盘事件,keyEvent类赋值捕获键盘事件,而可以通过为组件添加实现KeyListener接口的监听器类里处理相印的键盘事件 


96d7346d45374bab8bf5d7560e26df98.png 

c4694a9660624f25a84d9b59443c03f2.png 

 

18.10.3MouseEvent鼠标事件

所有组件都能发生鼠标事件MouseEvent类赋值捕捉鼠标事件,可以通过为组件添加了MouseListener接口的监听器类来处理像相应的鼠标事件

ffcd5e2d72864d09a07fd8ce77105b59.png

33b43d68c44e42f2b50fde0d34680313.png 

2fbc861ff2d1464c90e75ebba90b87e9.png 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值