Java-GUI编程(Swing)
目录
Swing
一、常用窗体
Swing窗体是Swing的一个组件,同时也是创建图形化用户界面的容器,可以将其它组件放置在窗体容器中。
1. JFrame框架窗体
JFrame窗体是一个容器,在Swing开发中我们经常要用到,它是Swing程序中各个组件的载体。语法格式如下:
中更常用的方式是通过继承java.swing.JFrame类创建一个窗体,可通过this关键字调用其方法。
常用的窗体关闭方式有四种:
- “DO_NOTHING_ON_CLOSE” :什么也不做就将窗体关闭;
- “DISPOSE_ON_CLOSE” :任何注册监听程序对象后会自动隐藏并释放窗体;
- “HIDE_ON_CLOSE” : 隐藏窗口的默认窗口关闭;
- “EXIT_ON_CLOSE”:退出应用程序默认窗口关闭。
2. JDialog窗体
JDialog窗体是Swing组件中的对话框,继承了AWT组件中的java.awt.Dialog类。功能是从一个窗体中弹出另一个窗体。
二、标签组件
在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。上面我们提到的JLabel就是这里的内容
1. 标签
标签由JLabel类定义,可以显示一行只读文本、一个图像或带图像的文本。
常用语法格式如下,创建的是一个不带图标和文本的JLabel对象:
2. 图标
Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。
在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。
con是接口,在使用Icon接口的时候,必须实现Icon接口的三个方法:
前两个方法用于获取图片的长宽,paintIcon()方法用于实现在指定坐标位置画图。
3. 图片图标
Swing中的图标除了可以绘制之外,还可以使用某个特定的图片创建。利用javax.swing.ImageIcon类根据现有图片创建图标。
对于图片标签,我们经常将图片放置在标签上,用JLabel中的setIcon()方法即可,当然也可以在初始化JLabel对象时为标签指定图标,这需要获取一个Icon实例。
而getResource()方法可以获得资源文件的URL路径,这里的路径是相对于前面的那个类的,所以可将该图片与该类放在同一个文件夹下;如果不在同一个文件夹下,需通过其它方法获取路径。
三、布局管理器
1. 绝对布局
1. 使用Container.setLayout(null)方法取消布局管理器
2. 使用Container.setBounds()方法设置每个组件的位置和大小
setBounds()方法中,前两个参数是位置的xy坐标,后两个参数是按钮的长和宽。
2. 流布局管理器
流布局管理器是布局管理器中最基本的布局管理器,使用FlowLayout类,像“流”一样从左到右摆放组件,直到占据了这一行的所有空间,再向下移动一行。组件在每一行的位置默认居中排列,要更改位
置可自行设置。
在FlowLayout的有参构造方法中,alignment设置为0时,每一行的组件将被指定左对齐排列;当alignment被设置为2时,每一行的组件将被指定右对齐排列;而为1时是默认的居中排列。
3. 边界布局管理器
在不指定窗体布局时,Swing组件默认的布局管理器是边界布局管理器,使用的是BorderLayout类。在上个例子中,一个JLabel标签占据了整个空间,实质上是默认使用了边界布局管理器。边界布局管理器还可以容器分为东、南、西、北、中五个区域,可以将组件加入这五个区域中。
4. 网格布局管理器
网格布局管理器将容器划分为网格,组件按行按列排列,使用GridLayout类。在此布局管理器中,每个组件的大小都相同,且会填满整个网格,改变窗体大小,组件也会随之改变。
四、面板
面板也是一个容器,可作为容器容纳其他组件,但也必须被添加到其他容器中。Swing中常用面板有JPanel面板和JScrollPane面板。
1. JPanel
JPanel面板可以聚集一些组件来布局。继承自java.awt.Container类。
2. JScrollPane
若遇到一个较小的容器窗体中显示一个较大部分内容的情况,可用JScrollPane面板。这是一个带滚动条的面板,就像平时浏览网页,经常遇到的滚动条一样。如果需要在JScrollPane面板中放置多个组件,需将这多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPane面板上。
其中JTextArea是创建一个文本区域组件,大小为20*50,setText()方法是给该文本区域填值。这里在new一个JScrollPane时,就将文本区域组件添加到其上。
五、按钮组件
1. 提交按钮组件(JButton)
JButton在之前已经出现多次,是较为常用的组件,用于触发特定动作。可以在按钮上显示文本标签,还可以显示图标。
2. 单选按钮组件(JRadioButton)
默认情况下,单选按钮显示一个圆形图标,通常在其旁放置一些说明性文字。当用户选中某个单选按钮后,按钮组中其它按钮将被自动取消,这时就需要按钮组(ButtonGroup)来将同组按钮放在一起,该按钮组中的按钮只能选择一个,而不在此按钮中的按钮不受影响
3. 复选框组件(JCheckBox)
复选框是一个方块图标,外加一段描述性文字,与单选按钮的区别就是可以多选。每一个复选框都提供“选中”与“不选中”两种状态。
六、列表组件
1. 下拉列表(JComboBox)
下拉列表框使用JComboBox类对象来表示,如下方代码:
2. 列表框(JList)
列表框只是在窗体上占据固定的大小,如果要使列表框具有滚动效果,可以将列表框放入滚动面板中。使用数组初始化列表框的参数如下。
将Vector类型的数据作为初始化JList的参数如下。
七、文本组件
1. 文本框(JTextField)
文本框用来显示或编辑一个单行文本,语法格式如下:
2. 密码框(JPasswordField)
密码框与文本框的定义与用法类似,但会使用户输入的字符串以某种符号进行加密。如下方代码:
3. 文本域(JTextArea)
文本域组件在上面的代码中已经用过,如下方代码所示:
还有其他内容可参考API或源码。常用的结构和方法就这么多了,现在这个不怎么用了。 了解即可!