1. JFrame窗体需要用户进行设置的属性不多,通常有:
- defaultCloseOperation:HIDE、EXIT_ON_CLOSE(默认设置)、DO_NOTHING、DISPOSE。若要在窗体关闭前实现用户的自定义操作,则需要设置为DO_NOTHING,但此时点击“关闭”按钮就不能关闭窗体了,需要自己添加相应的代码实现。
- title:窗体的标题,默认没有。此处可设为自己喜欢的标题。
- resizable:窗体尺寸是否可调整,默认为true。
2.Swing容器,比较常用的共同属性有:background、border,对于工具栏,还有floatable、orientation(方向)可以设置,而其他一些容器,则有一些特有的属性可以设置.
拆分窗格(JSplitPane):一、在netbeans中新建拆分窗格,设置orientation属性为VERTICAL_SPLIT上下拆分。
二、右击拆分窗格,选择从组件面板中添加,选择自己需要添加的组件,设置完表属性后继续添加第二个。
三、设置拆分窗格属性:dividerlocation属性为上窗格的大小,dividerSize为中间的拆分条宽度,continuousLayout设置是否可以拖动拆分条,oneTouchExpandable设置拆分窗格是否可以展开或收起,resizeWeight按比例调整两个窗格的大小(主意先调整resizeWeight再把dividerLocation设为-1,否则无效)
2、创建Swing容器
重点练习面板(JPanel)、标签化窗格(JTabbledPane)、拆分窗格(JSplitPane)、工具栏(JToolbar)等容器,分别将它们从“组件面板”中拖入JFrame窗体中,注意观察它们的样子、属性设置等内容。 对于Swing容器,比较常用的共同属性有:background、border,对于工具栏,还有floatable、orientation可以设置,而其他一些容器,则有一些特有的属性可以设置。
(1)JPanel
面板是最纯洁的一种容器,她就相当于一张白纸,可以将若干相关的组件布局在一起,形成一个组合体。JPanel默认是没有边框的,有时为了更清晰地展示界面,就需要对其进行边框、颜色等属性设置。
(2)JTabbedPane
标签化窗格是能够将若干个不同的容器按照标签化的方式组织在一起的一种容器,用户可以通过点击标签实现各容器之间的快速切换,能够节省大量显示空间。
(3)JSplitPane
拆分窗格是一种能够将若干容器按照横向或纵向方式进行布局的容器,并且可以通过拖拽分割符实现容器尺寸的改变。
(4)JToolbar
工具栏是一种将若干常用的功能组织在一起以方便用户进行操作的容器,通常结合文本和图标以更加形象直观的方式进行展示,一般位于菜单栏的下方,也可以设置为可浮动的形式。
3、创建Swing控件
这一部分是使用最多的内容,它们一般都是用户直接进行操作的组件。这里重点练习标签(JLabel)、按钮(JButton)、复选框(JCheckBox)、单选按钮(JRadioButton)、按钮组(ButtonGroup)、组合框(JComboBox)、列表(JList)、文本字段(JTextField)、文本区域(JTextArea)、口令字段(JPasswordField)、分隔符(JSeparator)、表(JTable)等组件的使用,分别将它们从“组件面板”中拖入JFrame窗体中的某些容器中,注意观察它们的样子、属性设置等内容。
(1)JLabel
标签通常用来表示静态的文本或图标内容,用于提示某些组件的作用等。
(2)JButton
按钮是一种大量使用的控件,它会触发动作事件以实现若干功能和操作。
(3)JCheckBox
复选框是一种展示选中与否的组件,方便进行某个状态的设置。
(4)JRadioButton
单选按钮也是一种展示选中与否的组件,与复选框不同的是,它常用于将若干互斥的状态或功能组织在一起,并通过按钮组实现,也可以不使用按钮组而采用编写代码的方式进行控制。
(5)ButtonGroup
按钮组是一个将若干单选按钮形成一个组的特殊组件,其特殊之处在于它在界面上是不可见的。通过选定若干单选按钮并将它们的“buttonGroup”属性设置为同一个按钮组对象而实现将这些单选按钮形成互斥的一个组。
(6)JComboxBox
组合框是一种将若干条目组织在一起,通过下拉列表的形式进行选择,通常只显示其中的一个条目,占用界面空间少。
(7)JList
列表框也是一种将若干条目组织在一起的组件,它可以同时显示出多个条目,并结合滚动条实现条目的滚动显示,并能够以图标方式进行更加直观的展示。
(8)JTextField
文本字段用于输入单行文本。
(9)JTextArea
文本区域用于输入多行文本,该组件自动与滚动窗格相结合实现文本的横向和纵向滚动。
(10)JPasswordField
口令字段用于输入口令的内容,它以设定的回显字符对实际输入的内容进行显示屏蔽。
(11)JSeparator
分割符是将界面中不同的区域进行横向或纵向分割的组件,它能够使界面的区域划分看上去更加清晰。
(12)JTable
表格是一种比较复杂的组件,它能够以二维表格的形式展示数据,并可以进行大量的属性设置,支持与滚动窗格的自动结合。
- 设计下列方法:
- public static void fitJTableColumns(JTable table, double[] columnWidths)
功能:将表格table中各列的宽度按照columnWidths数组中的值进行设置。表格在默认情况下各列的宽度是相同的,使用该方法可以使各列的宽度不同,以适应表格中数据的实际情况。
4、创建Swing菜单
主要包括菜单栏(JMenuBar)、菜单(JMenu)、菜单项(JMenuItem)、菜单项/复选框(JCheckBoxMenuItem)、菜单项/单选按钮(JRadioButtonMenuItem)、分隔符(JSeparator)、弹出式菜单(JPopupMenu)等的使用。
(1)JMenuBar
菜单栏是将若干菜单组织在一起的组件,它通常位于标题栏的下方。
(2)JMenu
菜单是将若干菜单项、分割符等组织在一起的组件。
(3)JMenuItem
菜单项有两种展示方式:一种是级联菜单,可以引出下一级菜单;另一种是终端菜单项,与一个具体的功能相对应。
- 有趣的是:JMenuItem是JMenu的父类!
(4)JCheckBoxMenuItem
复选框菜单项与JCheckBox的特点相同,只是展示方式不同。
(5)JRadioButtonMenuItem
单选按钮菜单项与JRadioButton的特点相同,只是展示方式不同。
(6)JPopupMenu
弹出式菜单是一种用途非常广泛的组件,它通常通过右键单击进行显示,对于用户执行相关的功能带来了极大的方便。弹出式菜单也是一种在界面上是不可见的组件。
(7)JSeparator
分割符与控件中的分隔符相同,它们是同一种组件,用于将不同用途的菜单项进行分割显示。
- JFrame用于一个系统的主界面,对一个系统而言,一般只有一个。而JDialog则用于系统操作过程中的需要与用户进行数据交互的各个对话框,一个系统中往往会有若干个对话框。
- 对话框分为“有模式”对话框和“无模式”对话框两种,对于“有模式”对话框,其执行方式是阻塞型的,即当这种对话框显示时,不能操作其依附的父窗体,只有将该对话框关闭后其父窗体才进行响应。而“无模式”对话框则是不阻塞的,当这类对话框显示时,其所依附的父窗体依然能够进行响应。至于选择哪一种对话框,要根据具体情况而定。基本的原则是:如果操作流程中需要从对话框中获取数据来进行后续的操作,则需要使用“有模式”对话框,否则将不能得到对话框中的数据;若无此需要,可使用“无模式”对话框。在实际应用中,通常“有模式”对话框比“无模式”对话框用的要多。
- JFrame与JDialog的设计基本一致,此处可选择其一熟悉界面设计的一般步骤和基本方法。下面以JFrame为例进行说明。
(3)设置属性
一般情况下,JFrame窗体需要用户进行设置的属性不多,通常有:
- defaultCloseOperation:HIDE、EXIT_ON_CLOSE(默认设置)、DO_NOTHING、DISPOSE。若要在窗体关闭前实现用户的自定义操作,则需要设置为DO_NOTHING,但此时点击“关闭”按钮就不能关闭窗体了,需要自己添加相应的代码实现。
- title:窗体的标题,默认没有。此处可设为自己喜欢的标题。
- resizable:窗体尺寸是否可调整,默认为true。
2、创建Swing容器
重点练习面板(JPanel)、标签化窗格(JTabbledPane)、拆分窗格(JSplitPane)、工具栏(JToolbar)等容器,分别将它们从“组件面板”中拖入JFrame窗体中,注意观察它们的样子、属性设置等内容。 对于Swing容器,比较常用的共同属性有:background、border,对于工具栏,还有floatable、orientation可以设置,而其他一些容器,则有一些特有的属性可以设置。
(1)JPanel
面板是最纯洁的一种容器,她就相当于一张白纸,可以将若干相关的组件布局在一起,形成一个组合体。JPanel默认是没有边框的,有时为了更清晰地展示界面,就需要对其进行边框、颜色等属性设置。
(2)JTabbedPane
标签化窗格是能够将若干个不同的容器按照标签化的方式组织在一起的一种容器,用户可以通过点击标签实现各容器之间的快速切换,能够节省大量显示空间。
(3)JSplitPane
拆分窗格是一种能够将若干容器按照横向或纵向方式进行布局的容器,并且可以通过拖拽分割符实现容器尺寸的改变。
(4)JToolbar
工具栏是一种将若干常用的功能组织在一起以方便用户进行操作的容器,通常结合文本和图标以更加形象直观的方式进行展示,一般位于菜单栏的下方,也可以设置为可浮动的形式。
3、创建Swing控件
这一部分是使用最多的内容,它们一般都是用户直接进行操作的组件。这里重点练习标签(JLabel)、按钮(JButton)、复选框(JCheckBox)、单选按钮(JRadioButton)、按钮组(ButtonGroup)、组合框(JComboBox)、列表(JList)、文本字段(JTextField)、文本区域(JTextArea)、口令字段(JPasswordField)、分隔符(JSeparator)、表(JTable)等组件的使用,分别将它们从“组件面板”中拖入JFrame窗体中的某些容器中,注意观察它们的样子、属性设置等内容。
(1)JLabel
标签通常用来表示静态的文本或图标内容,用于提示某些组件的作用等。
(2)JButton
按钮是一种大量使用的控件,它会触发动作事件以实现若干功能和操作。
(3)JCheckBox
复选框是一种展示选中与否的组件,方便进行某个状态的设置。
(4)JRadioButton
单选按钮也是一种展示选中与否的组件,与复选框不同的是,它常用于将若干互斥的状态或功能组织在一起,并通过按钮组实现,也可以不使用按钮组而采用编写代码的方式进行控制。
(5)ButtonGroup
按钮组是一个将若干单选按钮形成一个组的特殊组件,其特殊之处在于它在界面上是不可见的。通过选定若干单选按钮并将它们的“buttonGroup”属性设置为同一个按钮组对象而实现将这些单选按钮形成互斥的一个组。
(6)JComboxBox
组合框是一种将若干条目组织在一起,通过下拉列表的形式进行选择,通常只显示其中的一个条目,占用界面空间少。
(7)JList
列表框也是一种将若干条目组织在一起的组件,它可以同时显示出多个条目,并结合滚动条实现条目的滚动显示,并能够以图标方式进行更加直观的展示。
(8)JTextField
文本字段用于输入单行文本。
(9)JTextArea
文本区域用于输入多行文本,该组件自动与滚动窗格相结合实现文本的横向和纵向滚动。
(10)JPasswordField
口令字段用于输入口令的内容,它以设定的回显字符对实际输入的内容进行显示屏蔽。
(11)JSeparator
分割符是将界面中不同的区域进行横向或纵向分割的组件,它能够使界面的区域划分看上去更加清晰。
(12)JTable
表格是一种比较复杂的组件,它能够以二维表格的形式展示数据,并可以进行大量的属性设置,支持与滚动窗格的自动结合。
- 设计下列方法:
- public static void fitJTableColumns(JTable table, double[] columnWidths)
功能:将表格table中各列的宽度按照columnWidths数组中的值进行设置。表格在默认情况下各列的宽度是相同的,使用该方法可以使各列的宽度不同,以适应表格中数据的实际情况。
4、创建Swing菜单
主要包括菜单栏(JMenuBar)、菜单(JMenu)、菜单项(JMenuItem)、菜单项/复选框(JCheckBoxMenuItem)、菜单项/单选按钮(JRadioButtonMenuItem)、分隔符(JSeparator)、弹出式菜单(JPopupMenu)等的使用。
(1)JMenuBar
菜单栏是将若干菜单组织在一起的组件,它通常位于标题栏的下方。
(2)JMenu
菜单是将若干菜单项、分割符等组织在一起的组件。
(3)JMenuItem
菜单项有两种展示方式:一种是级联菜单,可以引出下一级菜单;另一种是终端菜单项,与一个具体的功能相对应。
- 有趣的是:JMenuItem是JMenu的父类!
(4)JCheckBoxMenuItem
复选框菜单项与JCheckBox的特点相同,只是展示方式不同。
(5)JRadioButtonMenuItem
单选按钮菜单项与JRadioButton的特点相同,只是展示方式不同。
(6)JPopupMenu
弹出式菜单是一种用途非常广泛的组件,它通常通过右键单击进行显示,对于用户执行相关的功能带来了极大的方便。弹出式菜单也是一种在界面上是不可见的组件。
(7)JSeparator
分割符与控件中的分隔符相同,它们是同一种组件,用于将不同用途的菜单项进行分割显示。