1.概述

GUI(Griphycal User Interface)即图形用户界面,它能够使应用程序看起来更加友好;创建容器(即面板)时需继承JFrame类,JFrame类位于javax的swing包内,所以应该导入 swing(import javax.swing.*)。窗口和面板一般被称为容器组件,面板镶嵌在窗口上,面板上可以镶嵌面板,可以镶嵌组件,可以进行布局。java图形界面的基本组成部分是组件,组件是一个以图形化的方式展示在屏幕上并可以与用户进行交互的对象,面板与窗口是最常用的两个容器,组件不能独立展示出来,必须镶嵌在容器上才可以展现出来。注意所有对窗口的操作都存在于构造方法中,在main方法中只需创建对象即可加载构造方法,生成界面

2.构造方法

this.setsize表示窗口的大小

this.setLocation表示窗口的位置

this.setVisible在界面中显示出窗口,默认不显示窗口,位于构造函数最后一行,相当于打印窗口

this.setLocationRelativeTo(null)窗口位置居中

import javax.swing.*;
import java.awt.*;
//调用javax.swing.*
public class ChuangKouDome1 extends JFrame {
//继承了JFrame类
    Container container=this.getContentPane();
    public ChuangKouDome1(){
        this.setSize(500,500);
        //窗口的长宽
        this.setLocation(200,200);
        //窗口的坐标
        this.setLocationRelativeTo(null);
        //窗口位置居中
        this.setTitle("hello word");
        //自定义窗口标题
        this.setVisible(true);
        //默认不显示窗口,此语句显示窗口,且必须位于最后一行,相当于打印窗口
}
}

3.面板

3.1容器中的默认面板,比较上层,一般并不使用

Container container=this.getContentPane();

3.2自定义面板,每一个面板都有一个布局管理器

创建面板组件

1)流式布局(FlowLayout)构造方法无参时,默认为流式布局,流式布局即为按顺序布局

JPanel a2=new JPanel ();

2)边界布局(BorderLayout)分为东西南北中五个方位,在添加组件时,须注明位置,未注明位置时默认为中间位置,且一个位置只能添加一个组件,重复添加组件时,会覆盖掉上一个组件

public class ChuangKouDome1 extends JFrame {
//继承了JFrame类
    Container container=this.getContentPane();
    public ChuangKouDome1(){
        this.setSize(500,500);
        //窗口的长宽
        this.setLocation(200,200);
        //窗口的坐标
        JPanel a2=new JPanel (new BorderLayout());
        //边界布局,五个区域,中间区域无法缺少
        JButton w1=new JButton("按钮4");
        JButton w2=new JButton("按钮5");
        JButton w3=new JButton("按钮6");
        a2.add(w1,BorderLayout.NORTH);
        a2.add(w2,BorderLayout.EAST);
        a2.add(w3,BorderLayout.CENTER);
        this.add(a2);
        this.setVisible(true);
        //默认不显示窗口,此语句显示窗口
    }
    public static void main(String[] args) {
        ChuangKouDome1 s=new ChuangKouDome1();
    }

}

3)网格布局(GridLayout)创建面板时,须注明组件添加的行和列,先行后列,从第一行第一列开始添加组件

public class ChuangKouDome2 extends JFrame {
    public ChuangKouDome2(){
        this.setSize(500,500);
        this.setLocationRelativeTo(null);//窗口位置居中
        this.setTitle("hello word");
        JPanel s=new JPanel(new GridLayout(2,2));
        JButton e1=new JButton("按钮1");
        JButton e2=new JButton("按钮2");
        JButton e3=new JButton("按钮3");
        s.add(e1);
        s.add(e2);
        s.add(e3);
        this.add(s);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new ChuangKouDome2();
    }
}

4组件

4.1Jbutton(按钮) 在面板上可显示并点击的按钮组件

JButton e1=new JButton("按钮1");

4.2JLabel 创建一个标签组件,用于显示图片和文字

 a.setFont(new Font("隶书",Font.BOLD,20));
控制字体的格式,颜色,及长度大小
 a.setForeground(Color.BLACK);
控制背景的颜色

JLabel a=new JLabel("账号");
//创建一个标签组件,用于显示图片和文字
 a.setFont(new Font("隶书",Font.BOLD,20));
//控制字体的格式,颜色,及文本框的长度大小
 a.setForeground(Color.BLACK);
//控制文本框背景的颜色

4.3 JTextField 创建一个文本框组件

JTextField b=new JTextField(20);

4.4JPasswordField创建一个密码文本框组件,从外部无法获得密码

JPasswordField c=new JPasswordField(20);