1.Swing容器
顶层容器
在Swing中有三种可以使用的顶层容器 ,分别是JFrame , JDialog , JApplet
1.JFrame : 用于框架窗口的类,此窗口带有边框,标题,关闭和最小化窗口的图标,带GUI的应用程序至少使用一个框架窗口
2.JDialog :用于对话框的类
3.JApplet : 用于使用Swing组件的java Applet类
中间容器
中间容器时容器组件的一种 ,也可以承载其他组件 ,单中间容器不能独立显示 ,必须依赖于其他的顶层容器 , 常见的中间容器有Jpanel , JScrollpane , JTabbedPane和JToolBar
JPanel : 表示一个普通面板 ,是最灵活,最常用的中间容器
JScrollPane : 与JPanel类似 , 但他可在大的组件或可扩展组件周围提供滚动条
JTabbedPane : 表示选项卡面板,可以包括多个组件,但一次只显示一个组件 ,用于可在组件之间方便的切换
JToolBar : 表示工具栏 ,按行或列排列一组组件(通常是按钮).
2.JFrame窗口
JFrame类的常用构造方法如下
JFrame() : 构造一个初始时不可见的新窗体
JFrame(String title) : 创建一个具有title指定标题的不可见新窗体
当创建一个 JFrame 类的实例化对象后,其他组件并不能够直接放到容器上面,需要将组件添加至内容窗格,而不是直接添加至 JFrame 对象。示例代码如下:
frame.getContentPane().add(b);
方法名称 | 概述 |
---|---|
getContentPane() | 返回此窗体的 contentPane 对象 |
getDefaultCloseOperation() | 返回用户在此窗体上单击“关闭”按钮时执行的操作 |
setContentPane(Container contentPane) | 设置 contentPane 属性 |
setDefaultCloseOperation(int operation) | 设置用户在此窗体上单击“关闭”按钮时默认执行的操作 |
setDefaultLookAndFeelDecorated (boolean defaultLookAndFeelDecorated) | 设置 JFrame 窗口使用的 Windows 外观(如边框、关 闭窗口的 小部件、标题等) |
setIconImage(Image image) | 设置要作为此窗口图标显不的图像 |
setJMenuBar( JMenuBar menubar) | 设置此窗体的菜单栏 |
setLayout(LayoutManager manager) | 设置 LayoutManager 属性 |
JFrame小实验
package com.nantian.login;
import javax.swing.*;
import java.awt.*;
/**
* @Author
* @Date 2020/6/2 9:47
* @Version 1.0
*/
class JFrameDemo extends JFrame {
public JFrameDemo(){
setTitle("张氏管理集团");
setSize(400,200);
/*设置窗口是否可以关闭*/
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*创建一个标签*/
JLabel jl = new JLabel("朕 ,必将无敌于天下");
/*获取当前窗口的内容窗格*/
Container c = getContentPane();
c.add(jl);
setVisible(true);
}
public static void main(String[] args) {
/*创建一个实例化对象*/
new JFrameDemo();
}
}
3.JPanel面板
JPanel是一种中间层容器 , 他能容纳组件并将组件结合在一起 , 但他本身必须添加到其他容器中使用 , JPanel类的构造如下
JPanel() : 使用默认的布局管理器创建新面板 ,默认的布局管理器为FlowLayout
JPanel(LayoutManagerLayout layout) : 创建指定布局管理器的JPanel对象
JPanel类的常用方法
方法名及返回值类型 | 说明 |
---|---|
Component add(Component comp) | 将指定的组件追加到此容器的尾部 |
void remove(Component comp) | 从容器中移除指定的组件 |
void setFont(Font f) | 设置容器的字体 |
void setLayout(LayoutManager mgr) | 设置容器的布局管理器 |
void setBackground(Color c) | 设置组件的背景色 |
小案例
public class JPanelDemo {
public static void main(String[] args) {
/*创建一个JFrame对象*/
JFrame jf = new JFrame("张氏JAVA帝国集团");
jf.setBounds(300,100,400,200);
JPanel jp = new JPanel();
JLabel jl = new JLabel("张氏帝国董事长");
//设置背景色
jp.setBackground(Color.green);
jp.add(jl);
jf.add(jp);
//设置窗口可见
jf.setVisible(true);
}
}
这段代码的思路 : 创建三个对象
JFrame jf 最大的对象
JPanel jp 中间的对象
JLabel jL 最小的对象
把最小的对象添加到中间的对象
中间的对象添加到最大的对象
jp.add(jL) jf.add(jp)
需要设置一下最大对象的大小以及位置( jf.setBounds(300,100,400,200);)
设置一下中间对象的北京颜色 (jp.setBackground(Color.green);)
创建最小的对象的时候即可设置内容(JLabel jl = new JLabel("张氏帝国董事长张帅");)
最后额外设置一下窗体的可见性(jf.setVisible(true);)
4.边框布局管理器
BorderLayout (边框布局管理器)是window ,JFrame 和JDialog的默认布局管理器 ,东南西北中
构造方法 :
BorderLayout布局管理器的构造方法如下所示 :
BorderLayout() : 创建一个Border布局 ,组件之间没有间隙
BorderLayout(int hgap,int vgap) ; 创建一个Border布局 ,其中hgap表示组件之间的横向间隔 ,vgap表示组件之间的纵向间隔 , 单位是像素
小案例
public class BorderLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("张氏帝国第三分集团");
/*首先来创建一个Frame窗口*/
frame.setSize(400,200);
/*为Frame窗口设置布局为BorderLayout*/
frame.setLayout(new BorderLayout());
JButton button1 = new JButton("上");
JButton button2 = new JButton("左");
JButton button3 = new JButton("中");
JButton button4 = new JButton("右");
JButton button5 = new JButton("下");
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.WEST);
frame.add(button3,BorderLayout.CENTER);
frame.add(button4,BorderLayout.EAST);
frame.add(button5,BorderLayout.SOUTH);
frame.setBounds(300,200,600,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
代码总结 :首先创建需要的组件 JFrame以及五个Button按钮
设置一下frame的布局方式 frame.setLayout(new BorderLayout());
然后把五个按钮分别添加到frame里,并且设置布局方式
最后在设置一下就frame的窗体可以关闭 ,以及显现窗体
5.流式布局管理器
FlowLayout 布局管理器的构造方法如下
FlowLayout():创建一个布局管理器,使用默认的居中对齐方式和默认 5 像素的水平和垂直间隔。
FlowLayout(int align):创建一个布局管理器,使用默认 5 像素的水平和垂直间隔。其中,align 表示组件的对齐方式,对齐的值必须是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,指定组件在这一行的位置是居左对齐、居右对齐或居中对齐。
FlowLayout(int align, int hgap,int vgap):创建一个布局管理器,其中 align 表示组件的对齐方式;hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。
创建一个窗口 ,设置标题为"XXX" ,使用FlowLayout类对窗口进行布局 ,向容器中添加九个按钮 ,并且设置横向和纵向的间隔都为20像素 , 具体实现代码如下 :
public class FlowLayoutDemo {
public static void main(String[] args) {
/*创建Frame窗口*/
JFrame jFrame = new JFrame("张氏第4集团军");
/*创建面板*/
JPanel jPanel = new JPanel();
/*创建按钮*/
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
JButton button5 = new JButton("5");
JButton button6 = new JButton("6");
JButton button7 = new JButton("7");
JButton button8 = new JButton("8");
JButton button9 = new JButton("9");
/*面板中添加按钮*/
jPanel.add(button1);
jPanel.add(button2);
jPanel.add(button3);
jPanel.add(button4);
jPanel.add(button5);
jPanel.add(button6);
jPanel.add(button7);
jPanel.add(button8);
jPanel.add(button9);
/*向JPanel添加FlowLayout布局管理器, 将组件键的横向和纵向间隙都设置为20像素 */
jPanel.setLayout(new FlowLayout(FlowLayout.LEADING,20,20));
//设置背景色
jPanel.setBackground(Color.RED);
jFrame.add(jPanel);
jFrame.setBounds(300,200,300,150);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}