Java图形界面主要分成两层,顶级容器和面板容器。顶级容器有且只有一个,没有顶级容器就没有界面。JFrame是最常见的也是最通用的顶级容器。
1.JFrame
构造方法介绍:
① JFrame() 构造一个初始时不可见的新窗体。
② JFrame(String title) 创建一个新的、初始不可见的、具有指定标题的 Frame。
常用方法
① setTitle(String name) 定义此窗体的标题。
② setSize(int width,int height)或setSize(Dimension dim) 定义此窗体的尺寸。
③ setLocationRelativeTo(Component c) 设置窗口相对于指定组件的位置,如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的中央。
④ setDefaultCloseOperation(int operation) 设置按下关闭键后的事件(共四种)
1.this.setDefaultCloseOperation(0);// DO_NOTHING_ON_CLOSE,不执行任何操作。
2.this.setDefaultCloseOperation(1);//HIDE_ON_CLOSE,只隐藏界面,setVisible(false)。
3.this.setDefaultCloseOperation(2);//DISPOSE_ON_CLOSE,隐藏并释放窗体,dispose(),当最后一个窗口被释放后,则程序也随之运行结束。
4.this.setDefaultCloseOperation(3);//EXIT_ON_CLOSE,直接关闭应用程序,System.exit(0)。一个main函数对应一整个程序。
⑤ setLayout(LayoutManager arg0) 设置界面布局格式。
⑥ getsize() 返回一个尺寸(格式为Dimension)。
⑦ getWidth() 返回界面的宽(格式为int)。
⑧ getHeight() 返回界面的高(格式为int)。
⑨ add(Component arg0) 添加组件。
⑩ setJMenuBar(JMenuBar menuBar) 设置菜单栏。
2.JPanel
JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合。
构造方法介绍:
① JPanel()建立一个JPanel,默认为FlowLayout。
② JPanel(LayoutManager layout):建立一个JPanel,可自定义版面管理器。
常用方法
① setPreferredSize(Dimension dim) 定义此组件的尺寸。
② setLayout(LayoutManager arg0) 设置界面布局格式。
③ add(Component arg0) 添加组件。
④ setBorder(LineBorder arg0) 设置边框,默认无边框。
** LineBorder类
构造函数
① LineBorder(Color color) 创建具有指定颜色、厚度为 1(thickness = 1)的线边框。
② LineBorder(Color color, int thickness) 创建具有指定颜色和厚度的线边框。
③ LineBorder(Color color, int thickness, boolean roundedCorners) 创建具有指定颜色、厚度和拐角形状的线条边框。true表示拐角圆润,false表示拐角为直角。
3.JLabel
JLabel 对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。 还可以指定文本相对于图像的位置。默认情况下,文本位于图像的结尾边上,文本和图像都垂直对齐。
构造方法介绍:
① JLabel() 创建无图像并且其标题为空字符串的 JLabel。
② JLabel(Icon image) 创建具有指定图像的 JLabel 实例。
③ JLabel(Icon image, int horizontalAlignment) 创建具有指定图像和水平对齐方式的 JLabel 实例。
④ JLabel(String text) 创建具有指定文本的 JLabel 实例。
⑤ JLabel(String text, Icon icon, int horizontalAlignment) 创建具有指定文本、图像和水平对齐方式的 JLabel 实例。
⑥ JLabel(String text, int horizontalAlignment) 创建具有指定文本和水平对齐方式的 JLabel 实例。
常用方法
① setIcon(Icon icon) 定义此组件将要显示的图标。
② setText(String text) 定义此组件将要显示的单行文本。
③ setPreferredSize(Dimension dim) 定义此组件的尺寸。
4.JTextArea/JTextField/ JPasswordField
文本输入框包括两种,单行文本输入框 (JTextField) 和多行文本输入框 (JTextArea)。密码输入框则只有一种 (JPasswordField)。JPasswordField 是 JTextField 的子类,它们的主要区别是 JPasswordField 不会显示出用户输入的东西,而只会显示出程序员设定的一个固定字符,比如 '*'。
构造方法介绍(以JTextArea为例):
① JTestArea()建立一个JTextArea对象,使用预设的模式、空字符串、0行、0列。
② JTextArea(String text) 建立一个JTextArea对象,使用预设的模式、字符串为text、行列由字符串决定。
③ JTextArea(int rows, int columns) 建立一个JTextArea对象,使用预设的模式、空字符串、rows行、columns行。
④ JTextArea(String text, int rows, int columns) 建立一个JTextArea对象,使用预设的模式、字符串为text、rows行、columns行。
常用方法:
① setText(String text) 定义此组件内的文本。
② append(String str) 将字符串str加入尾端。
③ insert(String str, int pos) 将字符串str插入pos位置处。
④ replaceRange(String str, int start, int end) 字符串str替换从start到end位置的字符串。
⑤ setFont(Font f) 设置字体为f。
⑥ setForeground(Color fg) 设置字体颜色。
**Font类:
构造方法介绍:
Font(String familyName,int style,int size)
- familyName是字体类型,例如宋体、仿宋、Times New Roman等;
- style是字体风格,例如斜体字、加粗等;
官方提供4种固定值,如下:
Font.PLAIN(普通)
Font.BOLD(加粗)
Font.ITALIC(斜体)
Font.BOLD + Font.ITALIC(粗斜体)
- size是字体大小,其默认单位为pt(磅),数字越大、字就越大(例如12pt字比10pt的字要大)。
**Color类
构造方法介绍:
Color(int r,int g,int b) 定义一个RGB值分别为r,g和b的颜色。
- r,g和b范围都是0~255。
- 如果不想自己定义,可以直接调用Color类中的静态变量,如白色:Color.WHITE,红色:Color.RED。
⑦ setLineWrap(boolean arg0) 设置自动换行,ture表示自动换行,false表示不自动换行。
⑧ setBorder(LineBorder arg0) 设置边框,默认无边框。
5. JScrollPane
JScrollPane类可提供轻量级组件的 scrollable 视图(滚动视图)。JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。JScrollPane本身与JPanel一样可以添加组件,一样添加的组件不能超过其自身尺寸,但JScrollPane可以让其内部组件产生滚动条。
构造方法介绍:
① JScrollPane() 建立一个空的JScrollPane对象。
② JScrollPane(Component view) 建立一个新的JScrollPane对象,当组件内容大于显示区域时会自动产生滚动轴。
③ JScrollPane(Component view,int vsbPolicy,int hsbPllicy) 建立一新的JScrollPane对象,里面含有显示组件,并设置滚动轴出现时机。
④ JScrollPane(int vsbPolicy,int hsbPolicy) 建立一个新的JScrollPane对象,里面不含有显示组件,但设置滚动轴出现时机。
- 滚动轴出现时机有两个参数,其中vsbPolicy可以为:
VERTICAL_SCROLLBAR_ALWAYS 始终显示垂直滚动轴。
VERTICAL_SCROLLBAR_AS_NEEDED 当组件内容垂直区域大于显示区域时出现垂直滚动轴。
VERTICAL_SCROLLBAR_NEVER 始终不显示垂直滚动轴。
- hsbPolicy可以为:
HORIZONTAL_SCROLLBAR_ALAWAYS 始终显示水平滚动轴。
HORIZONTAL_SCROLLBAR_AS_NEEDED 当组件内容水平区域大于显示区域时出现水平滚动轴。
HORIZONTAL_SCROLLBAR_NEVER 始终不显示水平滚动轴。
常用方法:
① setPreferredSize(Dimension dim) 定义此组件的尺寸。
② setLayout(LayoutManager arg0) 设置界面布局格式。
③ add(Component arg0) 添加组件。
6.JButton
由JButton的构造函数可以看出:JButton与JLabel的使用相当类似,只是JButton少了排列方式的参数罢了。要是我们想设置 JButton内文字或图像的水平排列方式,我们可以利用AbstractButton抽象类所提供的setHorizontalAlignment()方法来达成。 JButton在使用上与JLabel相当类似,只是类的设计方式有所不同,JLabel类自行提供组件排列方式的方法,而JButton是继承 AbstractButton抽象类的方法来排列按钮内的内容。
构造方法介绍:
① JButton():建立一个按钮。
② JButton(Icon icon):建立一个有图像的按钮。
③ JButton(String icon):建立一个有文字的按钮。
④ JButton(String text,Icon icon):建立一个有图像与文字的按钮。
常用方法:
① setIcon(Icon icon) 定义此组件将要显示的图标。
② setText(String text) 定义此组件将要显示的单行文本。
③ setPreferredSize(Dimension dim) 定义此组件的尺寸。
④ isEnabled(boolean arg0) 定义按钮可用性。
⑤ setToolTipText(String text) 设置按钮提示文字。
7. JCheckBox
复选框。
构造方法介绍:
① JCheckBox() 无文本,默认未选中。
② JCheckBox(String text) 有文本,默认未选中。
③ JCheckBox(String text, boolean selected) 有文本,并指定是否选中。
④ JCheckBox(Icon icon) 有图标,默认未选中。
⑤ JCheckBox(Icon icon, boolean selected) 有图标,并指定是否选中。
⑥ JCheckBox(String text, Icon icon, boolean selected) 有文本和图标,并指定是否选中。
常用方法:
① setText(String text) 设置文本内容。
② setFont(Font font) 设置字体。
③ setForeground(Color fg) 设置字体颜色。
④ setSelected(boolean b) 设置复选框是否选中状态。
⑤ boolean isSelected()判断复选框是否选中。
⑥ void setEnabled(boolean enable) 设置复选框是否可用。
⑦ setIconTextGap(int iconTextGap) 设置图片和文本的间距。
8. JMenuBar
(1)JMenuBar
表示一个菜单栏。
(2)JMenu
表示菜单栏上的一个一级菜单。
(3)JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem
表示一级菜单下的一个子菜单项,三者分别表示 普通的子菜单、带复选框的子菜单、带单选按钮的子菜单。
PS: JMenu 继承自 JMenuItem,所以一个 JMenu 也可以当做是一个二级子菜单项,通过 JMenu 和 JMenuItem 之间的嵌套,可实现多级子菜单效果。JMenu、JCheckBoxMenuItem、JRadioButtonMenuItem 均继承自 JMenuItem。
构造方法介绍:
① JMenuItem() 无文本的选项。
② JMenuItem(String text) 有文本的选项。
③ JMenuItem(Icon icon) 有图标的选项。
④ JMenuItem(String text, Icon icon) 有文本和图标的选项。
常用方法:(1~4为JMenuItem,5~6为JCheckBoxMenuItem、JRadioButtonMenuItem)
① setText(String text) 设置菜单显示的文本
② setIcon(Icon defaultIcon) 设置菜单显示的图标
③ setMnemonic(int mnemonic) 设置菜单的键盘助记符
④ setAccelerator(KeyStroke keyStroke) 设置修改键,使用键盘快捷键直接触发菜单项的动作
/*
* 例如按下 ALT+N 键触发菜单项动作:
* menuItem.setMnemonic(KeyEvent.VK_N);
* menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));
*/
⑤ setSelected(boolean b) 设置 复选框/单选按钮 是否选中
⑥ boolean isSelected() 判断 复选框/单选按钮 是否选中
实例:
JFrame jf=new JFrame();
jf.setSize(800,600);
JMenuBar menuBar=new JMenuBar();
JMenu file=new JMenu("文件");
JMenuItem New=new JMenuItem("新建");
JMenuItem Open=new JMenuItem("打开");
JMenuItem Save=new JMenuItem("保存");
file.add(New);
file.add(Open);
file.add(Save);
menuBar.add(file);
jf.setJMenuBar(menuBar);
jf.setVisible(true);
运行得到的结果为:
9.FlowLayout
流式布局。
10.BorderLayout
边框布局。边框布局中共有五个位置:North、South、West、East和Center。
用法:
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JPanel NorthPanel = new JPanel();
JPanel SorthPanel = new JPanel();
JPanel WestPanel = new JPanel();
JPanel EastPanel = new JPanel();
JPanel CenterPanel = new JPanel();
frame.add(NorthPanel, BorderLayout.NORTH);
frame.add(SorthPanel, BorderLayout.Sorth);
frame.add(WestPanel, BorderLayout.West);
frame.add(EastPanel, BorderLayout.East);
frame.add(CenterPanel, BorderLayout.Center);
frame.setVisible(true);