栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaSE之GUI

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaSE之GUI

文章目录
  • GUI
    • 一.GUI的概述
    • 二.Swing概述(java组件)
    • 三.容器组件
      • 1.概念
      • 2.常用容器
        • (1)Jframe(窗体)
          • 方法
        • (2)Jpanel (面板)
    • 四.布局管理器
      • 1.(默认)FlowLayout (流式布局)
      • 2.BorderLayout (边界布局)
      • 3.GridLayout(网格布局)
    • 五.常用组件
      • 1.标签(JLabel)
      • 2.单行文本(JTextField)
      • 3.多行文本框(Jtextarea)
      • 4.密码框(JPasswordField)
      • 5.按钮(JButton)
      • 6.菜单(栏)
      • 7.综合代码
    • 六.事件处理
    • 七.对话框
    • 八.内部类
      • 1.什么是内部类
      • 2.内部类的分类
        • (1)成员内部类
        • (2)静态内部类
        • (3)局部内部类
        • (4)匿名内部类
      • 3.内部类的特点与意义

GUI 一.GUI的概述

到目前为止,我们编写的都是基于控制台的程序; GUI(Graphical User Interface)即图形用户界面,它能够使应用程 序看上去更加友好;用户可以通过图形化界面对程序进行操作已达到自己想要的目的

二.Swing概述(java组件)
  • Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同 的行为。

  • Swing中的大部分组件类位于javax.swing包中.

  • Swing中的组件非常丰富,支持很多功能强大的组件

三.容器组件 1.概念
  • Java的图形用户界面的基本组成部分是组件,组件是一个以图形化的方式 显示在屏幕上并能与用户进行交互的对象;

  • 组件不能独立地显示出来,必须将组件放在一定的容器(container)中才 可以显示出来。

  • 容器可以容纳多个组件,通过调用容器的add(Component comp)方法 向容器中添加组件。

  • 窗口(frame)和面板(Panel)是最常用的两个容器。

2.常用容器 (1)Jframe(窗体)
  • Jframe用于在Swing程序中创建窗体;
方法

构造方法

常用方法

  • void setsize(int width, int height 设置窗口初始大小
  • void setvisible(boolean b) 显示窗口,一定要放到最后不然窗口不可显示
  • void settitle(String title)
  • void setresizable(boolean resizable)
  • void setlocation(int x, int y) 设置窗口初始位置
  • void setbounds(int x, int y, int width, int height)
  • void setlocationrelativeto(null) 设置窗口在电脑屏幕居中
  • void setdefaultcloseoperation(int operation) 设置点击红色关闭按钮程序停止 (如果不设置)则关闭了窗口程序依然在运行 Jframe中有多种静态方法来设置关闭程序的方式
  • public void setIconImage(Image image) 设置窗口图标,注意放在将图片文件放在当前文件下方
  • void dispose ()

代码

public class JframeDemo1 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(700,700);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方

    }


    public static void main(String[] args) {
        new JframeDemo1().creatJframe();

    }
}

结果

(2)Jpanel (面板)
  • JPanel提供面板,它是轻量级的容器;

  • 面板中可以添加其它组件,也可以设置布局,我们一般使用面板来实现布局嵌套;

方法

常用方法

常用代码

public class JframeDemo2 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(700,700);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp=new JPanel();    //不传参数的话默认面板流式布局

        jp.setBackground(Color.pink);  //设置面板的背景颜色

        JButton jb=new JButton();    //定义一个按钮,参数传的是按钮的名字也可以不传

        jp.add(jb);   //将按钮添加到面板里面

        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后



    }


    public static void main(String[] args) {
        new JframeDemo2().creatJframe();

    }
}

结果

四.布局管理器
  • swing中,提供了布局管理器类的对象可以管理

  • 每个Jpanel都有一个布局管理器对象,当容器需要对某个组件进行定位或判 断其大小尺寸时,就会调用其对应的布局管理器,调用Jpanel的setLayout方 法改变其布局管理器对象或通过构造方法设置。

1.(默认)FlowLayout (流式布局)
  • FlowLayout布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排, 并在默认情况下使组件尽量居中放置。

  • FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。

  • 不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式。

构造方法

new FlowLayout(align,int hgap,int vgap); align:对齐方式 hgap:水平距离 vgap:垂直距离

new FlowLayout(FlowLayout.LEFT);左对齐,水平和垂直间距为缺省值(5)。

new FlowLayout();使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)。

代码

import javax.swing.*;
import java.awt.*;

public class JframeDemo3 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(700,700);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp=new JPanel(new FlowLayout(FlowLayout.LEFT,10,10));    //流式布局
        //流式布局参数 align对齐方式  hgap水平间距(单位像素)   vagp垂直间距(单位像素)
        //从左至右从上到下,默认居中,一行排满换行。不改变组件的大小
        jp.setBackground(Color.pink);  //设置面板的背景颜色

        JButton jb1=new JButton("按钮1");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb2=new JButton("按钮2");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb3=new JButton("按钮3");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb4=new JButton("按钮4");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb5=new JButton("按钮5");    //定义一个按钮,参数传的是按钮的名字也可以不传

        jp.add(jb1);   //将按钮添加到面板里面
        jp.add(jb2);   //将按钮添加到面板里面
        jp.add(jb3);   //将按钮添加到面板里面
        jp.add(jb4);   //将按钮添加到面板里面
        jp.add(jb5);   //将按钮添加到面板里面

        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后



    }


    public static void main(String[] args) {
        new JframeDemo3().creatJframe();

    }
}

结果

2.BorderLayout (边界布局)
  • BorderLayout布局管理器只允许在容器内放置5个组件,这5个组件的位置是由BorderLayout类中的

North、South、East、West和Center5个常量来确定的,他们对应着容器中的上下左右中,用法如下:

this.add(new Button(“按钮”) ,BorderLayout.NORTH);

this.add(new Button(“按钮”) ,BorderLayout.CENTER);

组件在BorderLayout中的大小都是可以改变的。一般情况下可以让中间区域大一些,而且可以只用其中几

个区域。

  • BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中

(CENTER)**(必须)**五个区域,组件只能被添加到指定的区域。

  • 如不指定组件的加入部位,则默认加入到CENTER区。

  • 每个区域只能加入一个组件,添加的组件默认最大化,如加入多个,则先前加入的会被覆盖。

  • BorderLayout型布局容器尺寸缩放原则: 北、南两个区域在水平方向缩放。 东、西两个区域在垂直方向缩放。 中部可在两个方向上缩放。

  • 不设置位置信息默认是中间**(必须)**

代码

import javax.swing.*;
import java.awt.*;

public class JframeDemo4 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(300,300);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp=new JPanel(new BorderLayout());    //边界布局,布局界面上下左右中(中是必须有的)
        // 添加的组件默认最大化

        jp.setBackground(Color.pink);  //设置面板的背景颜色

        JButton jb1=new JButton("按钮1");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb2=new JButton("按钮2");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb3=new JButton("按钮3");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb4=new JButton("按钮4");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb5=new JButton("按钮5");    //定义一个按钮,参数传的是按钮的名字也可以不传

        jp.add(jb1,BorderLayout.NORTH);   //将按钮添加到边界布局面板里面的上位置
        jp.add(jb2,BorderLayout.WEST);   //将按钮添加到边界布局面板里面的右位置
        jp.add(jb3);   //将按钮添加到面板里面
        jp.add(jb4);   //将按钮添加到面板里面
        jp.add(jb5);   //将按钮添加到面板里面  如果不设置位置则默认时中间且会覆盖

        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后



    }


    public static void main(String[] args) {
        new JframeDemo4().creatJframe();

    }
}

结果

3.GridLayout(网格布局)
  • GridLayout布局管理器是矩形网格,在网格中放置组件,每个网格的高度和宽 度都相等,组件随着网格的大小而在水平和垂直方向上拉伸,网格的大小是由容器的 大小和创建网格的多少来确定的。其用法如下:

  • 当组件数目大于网格数时,GridLayout保持行数不变而自动增加列数。

  • GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下。

  • 在 GridLayout 构造方法中指定分割的行数和列数.

构造方法

new GridLayout(int rows,int cols) rows行 cols列

代码

import javax.swing.*;
import java.awt.*;

public class JframeDemo5 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(700,700);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp=new JPanel(new GridLayout(2,2));    //网格布局
        //参数 rows一行放置多少个组件 cols列一列放置多少个组件一行占满是从第二行开始,组件数量超出后会扩展出一列

        jp.setBackground(Color.pink);  //设置面板的背景颜色

        JButton jb1=new JButton("按钮1");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb2=new JButton("按钮2");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb3=new JButton("按钮3");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb4=new JButton("按钮4");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JButton jb5=new JButton("按钮5");    //定义一个按钮,参数传的是按钮的名字也可以不传

        jp.add(jb1);   //将按钮添加到网格布局的面板里面
        jp.add(jb2);   //将按钮添加到网格布局的面板里面
        jp.add(jb3);   //将按钮添加到网格布局的面板里面
        jp.add(jb4);   //将按钮添加到网格布局的面板里面
        jp.add(jb5);   //将按钮添加到网格布局的面板里面

        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后



    }


    public static void main(String[] args) {
        new JframeDemo5().creatJframe();

    }
}

结果

五.常用组件 1.标签(JLabel)
  • 标签是容纳文本和图标的控件,通常用来在界面中标识别的控件。

方法

2.单行文本(JTextField)
  • 单行文本(JTextField)

方法

3.多行文本框(Jtextarea)
  • 多行文本框(Jtextarea)

方法

4.密码框(JPasswordField)
  • 密码框(JPasswordField)

方法

5.按钮(JButton)
  • 按钮(JButton)

方法

6.菜单(栏)

7.综合代码

代码1

import javax.swing.*;
import java.awt.*;

public class JframeDemo1 extends Jframe {

    public void creatJframe() {
        this.setVisible(true);   //显示窗口
        this.setSize(700, 700);   //设置窗口初始大小
        this.setLocation(200, 200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp = new JPanel(new FlowLayout(FlowLayout.LEFT));    //不传参数的话默认面板流式布局

        jp.setBackground(Color.pink);  //设置面板的背景颜色


        JLabel jl = new JLabel("标签");  //标签组件
        jl.setFont(new Font("楷体", Font.BOLD, 20));
        //参数: name ,style如粗体Font.BoLD , size大小


        JTextField jf = new JTextField("这是我的第一个单行文本框", 20); //单行文本输入框
        //参数:String text默认显示内容  columns显示大小

        jf.setEditable(true);    //是否可以编辑
//        jf.setText(String text);      显示内容
//        jf.getText();   程序获得文本输入的内容
        jf.setVisible(true);  //是否可见


        Jtextarea ja = new Jtextarea("这是我的第一个多行文本输入框", 10, 10);
        //参数:无参  或  (String text 默认显示内容 ) int rows 行  int  columns列

        ja.setLineWrap(true); //当一行写满自动换行  (强制换行是针对英文说的)
        // ja.setWrapStyleWord(true);       英文单词换行

        JScrollPane jsp = new JScrollPane(ja);  //可以给多行文本输入设置自动滚动条


        jp.add(jl);    //把标签添加到面板里
        jp.add(jf);  //将单行文本框添加到面板里
        jp.add(jsp);   //将多行文本添加到面板里面
        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后



    }


    public static void main(String[] args) {
        new JframeDemo1().creatJframe();

    }
}

结果

代码2

import javax.swing.*;
import java.awt.*;

public class JframeDemo1 extends Jframe {

    public void creatJframe(){
        this.setSize(500,500);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方

        JPanel jp=new JPanel(new BorderLayout());

        JMenuBar jb=new JMenuBar();    //创建菜单栏(属于窗口(frame))

        JMenu jm1=new JMenu("新建");  //创建菜单
        JMenu jm2=new JMenu("选项");

        JMenuItem j11=new JMenuItem("文件夹");   //创建菜单项
        JMenuItem j12=new JMenuItem("文件");
        JMenuItem j21=new JMenuItem("打开");
        JMenuItem j22=new JMenuItem("删除");

        jm1.add(j11);   //将菜单项添加到菜单中
        jm1.add(j12);
        jm2.add(j21);
        jm2.add(j22);

        jb.add(jm1);  //将菜单加入到菜单栏中
        jb.add(jm2);

        this.add(jb);   //将菜单栏加入到窗口中
        jp.add(this.add(jb),BorderLayout.NORTH);
        this.add(jp);





        this.setVisible(true);   //显示窗口,一定要放到最后
    }


    public static void main(String[] args) {
        new JframeDemo1().creatJframe();

    }
}

结果

六.事件处理

事件处理案例

事件监听类:

代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JframeDemo2 extends Jframe {

    public void creatJframe(){
        this.setVisible(true);   //显示窗口
        this.setSize(700,700);   //设置窗口初始大小
        this.setLocation(200,200);     //设置窗口初始位置
        this.setLocationRelativeTo(null);   //设置窗口屏幕居中
        this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);  //设置点击红色关闭按钮程序停止
        // (如果不设置)则关闭了窗口程序依然在运行   Jframe中有多种静态方法来设置关闭程序的方式
        this.setIconImage(new ImageIcon("b.png").getImage());  //设置窗口图标,注意放在
        // 当前文件下方,不要管放程序的包

        JPanel jp=new JPanel();    //不传参数的话默认面板流式布局

        jp.setBackground(Color.pink);  //设置面板的背景颜色

        JButton jb=new JButton("按钮");    //定义一个按钮,参数传的是按钮的名字也可以不传
        JTextField jt=new JTextField("请输入内容",10);



        jp.add(jb);   //将按钮添加到面板里面
        jp.add(jt);

        this.add(jp);   //将面板添加到当前窗口对象中

        this.setVisible(true);   //显示窗口,一定要放最后


        jb.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {   //事件监听器   
                String s=jt.getText();     //单行文本框输入的内容
                if (s.length()<10){
                    System.out.println("输入的还不算多");
                }else{
                    System.out.println("输入太多了");
                }
                System.out.println("我被点击了");
            }
        });

    }


    public static void main(String[] args) {
        new JframeDemo2().creatJframe();

    }
}

结果

鼠标监听类:

键盘监听类:

七.对话框

用法

int res=JOptionPane.show/confirm/iDialog(null,
                "确认退出吗","退出框",JOptionPane.YES_NO_CANCEL_OPTION);  //确认对话框

JOptionPane.showMessageDialog(null,"你又不退出了",
                    "提示框",JOptionPane.INFORMATION_MESSAGE);  //消息对话框
八.内部类 1.什么是内部类
  • 把类定义在另一个类的内部,该类就被称为内部类。

  • 如果在类 Outer 的内部再定义一个类 Inner,此时类 Inner 就称为内部类 (或称为嵌套类),而类 Outer 则称为外部类(或称为宿主类)

2.内部类的分类 (1)成员内部类


(2)静态内部类

(3)局部内部类

(4)匿名内部类

3.内部类的特点与意义

特点:

意义:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/306911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号