Java小白成长记——Java启程篇之Java UI

Java swing

面对即将被时代淘汰的Java swing,今天我们就来深入浅出,简单了解在客户端中Java Swing的使用与开发。
在这里插入图片描述

一. JFrame 窗口

JFrame 用来设计类似于 Windows 系统中窗口形式的界面。JFrame 是 Swing 组件的顶层容器,该类继承了 AWT 的 Frame 类,支持 Swing 体系结构的高级 GUI 属性。
在这里插入图片描述

1.1 JFrame 类的常用构造方法如下所示。

• JFrame():构造一个初始时不可见的新窗体。
• JFrame(String title):创建一个具有 title 指定标题的不可见新窗体。

方法名称概述
getContentPane()返回此窗体的 contentPane 对象
getDefaultCloseOperation()返回用户在此窗体上单击“关闭”按钮时执行的操作
setContentPane(Container contentPane)设置 contentPane 属性
setDefaultCloseOperation(int operation)设置用户在此窗体上单击“关闭”按钮时默认执行的操作
setIconImage(Image image)设置要作为此窗口图标显不的图像
setJMenuBar( JMenuBar menubar)设置此窗体的菜单栏
setLayout(LayoutManager manager)设置 LayoutManager 属性
setDefaultLookAndFeelDecorated (booleandefaultLookAndFeelDecorated)设置 JFrame 窗口使用的 Windows 外观(如边框、关闭窗口的 小部件、标题等)

二. JPanel 面板

JPanel 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。JPanel 类的构造方法如下。
• JPanel():使用默认的布局管理器创建新面板,默认的布局管理器为 FlowLayout。
• JPanel(LayoutManagerLayout layout):创建指定布局管理器的 JPanel 对象。

方法名称概述
Component add(Component comp)将指定的组件追加到此容器的尾部
void remove(Component comp)从容器中移除指定的组件
void setFont(Font f)设置容器的字体
void setLayout(LayoutManager mgr)设置容器的布局管理器
void setBackground(Color c)设置组件的背景色

2.1 边框布局管理器BorderLayout

BorderLayout(边框布局管理器)是 Window、JFrame 和 JDialog 的默认布局管理器。边框布局管理器将窗口分为 5 个区域:North、South、East、West 和 Center。其中,North 表示北,将占据面板的上方;Soufe 表示南,将占据面板的下方;East表示东,将占据面板的右侧;West 表示西,将占据面板的左侧;中间区域 Center 是在东、南、西、北都填满后剩下的区域,如图 1 所示。
在这里插入图片描述

提示:边框布局管理器并不要求所有区域都必须有组件,如果四周的区域(North、South、East 和 West 区域)没有组件,则由 Center 区域去补充。如果单个区域中添加的不只一个组件,那么后来添加的组件将覆盖原来的组件,所以,区域中只显示最后添加的一个组件。

BorderLayout 布局管理器的构造方法如下所示。
• BorderLayout():创建一个 Border 布局,组件之间没有间隙。
• BorderLayout(int hgap,int vgap):创建一个 Border 布局,其中 hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

2.2 流式布局管理器FlowLayout

FlowLayout(流式布局管理器)是 JPanel 和 JApplet 的默认布局管理器。FlowLayout 会将组件按照从上到下、从左到右的放置规律逐行进行定位。与其他布局管理器不同的是,FlowLayout 布局管理器不限制它所管理组件的大小,而是允许它们有自己的最佳大小。

FlowLayout 布局管理器的构造方法如下。
• FlowLayout():创建一个布局管理器,使用默认的居中对齐方式和默认 5 像素的水平和垂直间隔。
• FlowLayout(int align):创建一个布局管理器,使用默认 5 像素的水平和垂直间隔。其中,align 表示组件的对齐方式,对齐的值必须是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,指定组件在这一行的位置是居左对齐、居右对齐或居中对齐。
• FlowLayout(int align, int hgap,int vgap):创建一个布局管理器,其中 align 表示组件的对齐方式;hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

2.3 卡片布局管理器CardLayout

CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显不空间,并且一次只显示一个容器组件的内容。

CardLayout 布局管理器将容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件。CardLayout 的构造方法如下。
• CardLayout():构造一个新布局,默认间隔为 0。
• CardLayout(int hgap, int vgap):创建布局管理器,并指定组件间的水平间隔(hgap)和垂直间隔(vgap)。

2.4 网格布局管理器GridLayout

GridLayout(网格布局管理器)为组件的放置位置提供了更大的灵活性。它将区域分割成行数(rows)和列数(columns)的网格状布局,组件按照由左至右、由上而下的次序排列填充到各个单元格中。

GridLayout 的构造方法如下。
• GridLayout(int rows,int cols):创建一个指定行(rows)和列(cols)的网格布局。布局中所有组件的大小一样,组件之间没有间隔。
• GridLayout(int rows,int cols,int hgap,int vgap):创建一个指定行(rows)和列(cols)的网格布局,并且可以指定组件之间横向(hgap)和纵向(vgap)的间隔,单位是像素。

提示:GridLayout 布局管理器总是忽略组件的最佳大小,而是根据提供的行和列进行平分。该布局管理的所有单元格的宽度和高度都是一样的。

2.5 网格包布局管理器GridBagLayout

GridBagLayout(网格包布局管理器)是在网格基础上提供复杂的布局,是最灵活、 最复杂的布局管理器。GridBagLayout 不需要组件的尺寸一致,允许组件扩展到多行多列。每个 GridBagLayout 对象都维护了一组动态的矩形网格单元,每个组件占一个或多个单元,所占有的网格单元称为组件的显示区域。

GridBagLayout 所管理的每个组件都与一个 GridBagConstraints 约束类的对象相关。这个约束类对象指定了组件的显示区域在网格中的位置,以及在其显示区域中应该如何摆放组件。除了组件的约束对象,GridBagLayout 还要考虑每个组件的最小和首选尺寸,以确定组件的大小。

为了有效地利用网格包布局管理器,在向容器中添加组件时,必须定制某些组件的相关约束对象。GridBagConstraints 对象的定制是通过下列变量实现的。

2.5.1 gridx 和 gridy

用来指定组件左上角在网格中的行和列。容器中最左边列的 gridx 为 0,最上边行的 gridy 为 0。这两个变量的默认值是 GridBagConstraints.RELATIVE,表示对应的组件将放在前一个组件的右边或下面。

2.5.2 gridwidth 和 gridheight

用来指定组件显示区域所占的列数和行数,以网格单元而不是像素为单位,默认值为 1。

2.5.3 fill

指定组件填充网格的方式,可以是如下值:GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(组件横向充满显示区域,但是不改变组件高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但是不改变组件宽度)以及 GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。

2.5.4 ipadx 和 ipady

指定组件显示区域的内部填充,即在组件最小尺寸之外需要附加的像素数,默认值为 0。

2.5.5. insets

指定组件显示区域的外部填充,即组件与其显示区域边缘之间的空间,默认组件没有外部填充。

2.5.6 anchor

指定组件在显示区域中的摆放位置。可选值有 GridBagConstraints.CENTER(默认值)、GridBagConstraints.NORTH、GridBagConstraints.
NORTHEAST、GridBagConstraints.EAST、GridBagConstraints.SOUTH、GridBagConstraints.SOUTHEAST、GridBagConstraints.WEST、GridBagConstraints.SOUTHWEST 以及 GridBagConstraints.NORTHWEST。

2.5.7 weightx 和 weighty

用来指定在容器大小改变时,增加或减少的空间如何在组件间分配,默认值为 0,即所有的组件将聚拢在容器的中心,多余的空间将放在容器边缘与网格单元之间。weightx 和 weighty 的取值一般在 0.0 与 1.0 之间,数值大表明组件所在的行或者列将获得更多的空间。

3. 盒布局管理器BoxLayout

BoxLayout(盒布局管理器)通常和 Box 容器联合使用,Box 类有以下两个静态方法。
• createHorizontalBox():返回一个 Box 对象,它采用水平 BoxLayout,即 BoxLayout 沿着水平方向放置组件,让组件在容器内从左到右排列。
• createVerticalBox():返回一个 Box 对象,它采用垂直 BoxLayout,即 BoxLayout 沿着垂直方向放置组件,让组件在容器内从上到下进行排列。

Box 还提供了用于决定组件之间间隔的静态方法,如表 1 所示。

唯一构造方法:
BoxLayout(Container c,int axis)

三. JLable标签组件

标签是一种可以包含文本和图片的非交互组件,其文本可以是单行文本,也可以是 HTML 文本。对于只包含文本的标签可以使用 JLabel 类,该类的主要构造方法有如下几种形式。
• JLabel():创建无图像并且标题为空字符串的 JLabel。
• JLabel(Icon image):创建具有指定图像的 JLabel。
• JLabel(String text):创建具有指定文本的 JLabel。
• JLabel(String textjcon image,int horizontalAlignment):创建具有指定文本、图像和水平对齐方式的 JLabel,horizontalAlignment 的取值有 3 个,即 JLabel.LEFT、JLabel.RIGHT 和 JLabel.CENTER。

JLabel 的常用方法如表

方法名称概述
void setText(Stxing text)定义 JLabel 将要显示的单行文本
void setIcon(Icon image)定义 JLabel 将要显示的图标
void setHorizontalTextPosition(int textPosition)设置 JLabel 的文本相对其图像的水平位置
void setHorizontalAlignment(int alignment)设置标签内容沿 X 轴的对齐方式
int getText()返回 JLabel 所显示的文本字符串
Icon getIcon()返回 JLabel 显示的图形图像
Component getLabelFor()获得将 JLabel 添加到的组件
int getIconTextGap()返回此标签中显示的文本和图标之间的间隔量
int getHorizontalTextPosition()返回此窗体的 contentPane 对象
int getHorizontalAlignment()返回 JLabel 的文本相对其图像的水平位置
void setIconTextGap(int iconTextGap)返回 JLabel 沿 X 轴的对齐方式

四. Jbutton按钮

按钮是图形界面上常见的元素,在前面已经多次使用过它。在 Swing 中按钮是 JButton 类的对象,JButton 类的常用构造方法如下。
• JButton():创建一个无标签文本、无图标的按钮。
• JButton(Icon icon):创建一个无标签文本、有图标的按钮。
• JButton(String text):创建一个有标签文本、无图标的按钮。
• JButton(String text,Icon icon):创建一个有标签文本、有图标的按钮。

方法名称概述
addActionListener(ActionListener listener)为按担组件注册 ActionListener 监听
void setIcon(Icon icon)设置按钮的默认图标
void setText(String text)设置按钮的文本
void setMargin(Insets m)设置按钮边框和标签之间的空白
void setMnemonic(int nmemonic)返回 JLabel 所显示的文本字符串
void setPressedIcon(Icon icon)设置按下按钮时的图标
void setSelectedIcon(Icon icon)设置选择按钮时的图标
void setRolloveiicon(Icon icon)设置鼠标移动到按扭区域时的图标
void setDisabledIcon(Icon icon)设置按钮无效状态下的图标
void setVerticalAlignment(int alig)设置图标和文本的垂直对齐方式
void setHorizontalAlignment(int alig)设置图标和文本的水平对齐方式
void setEnable(boolean flag)启用或禁用按扭
void setVerticalTextPosition(int textPosition)设置文本相对于图标的垂直位置
void setHorizontalTextPosition(int textPosition)设置文本相对于图标的水平位置
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值