Java深入学习图形用户界面GUI之创建窗体

GUI全程是Graphical User Interface,即图形用户界面。顾名思义,GUI就是可以让用户直接操作的图形化界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。目前,图形用户界面已经成为一种趋势,几乎所有的程序设计语言都提供了GUI设计功能。

Java针对GUI设计提供了丰富的类库,这些类分别位于java.awt和javax.swing包中,简称为AWT和Swing。AWT引入了大量的Windows函数,因此称为中重量级组件。Swing是以AWT为基础构建起来的轻量级的图形界面组件,在java的图形界面开发中使用更多,本文将对Swing相关知识进行讲解。

Swing概述:

Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包(AWT)为基础,使跨平台应用程序可以使用可插拔的外观风格。Swing拥有丰富的库和组件,使用非常灵活,开发人员只用很少的代码就可以创建出良好的用户界面。

在Java中,所有的Swing组件都保存在javax.swing包中,为了有效地使用Swing组件,必须了解Swing包的层次结构和继承关系。

Swing组件的所有类都继承自Container类,然后根据GUI开发的功能扩展了两个主要的分支,分别是容器分支和组件分支。其中,容器分支是为了实现图形化用户界面窗口的容器而设计的,而组件分支则是为了实现向容器中填充数据、元素和交互组件等功能。

在容器分支中,Swing组件类中有3个组件是继承的AWT的Window类,而不是继承自JComponent类,这3个组件是Swing中的顶级容器类,它们分别是JWindow、JFrame和JDialog。其中,JFrame和JDialog是最简单也是最常用的顶级容器,本文将对这两种顶级容器的基本使用方法进行详细讲解。

JFrame,它是一个独立存在的顶级容器(也称窗口),不能放置在其他容器中。JFrame支持通用窗口的所有基本功能,例如窗口最小化、设定窗口大小等。

JFrame案例:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1JFrame常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具调用createAndShowGUI()方法显示GUI程序
        SwingUtilities.invokeLater(GUI_1JFrame常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //设置并关闭窗口时的默认操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口标题
        frame.setTitle("窗口");
        //设置窗口尺寸
        frame.setSize(350, 300);
        //设置窗口显示位置
        frame.setLocation(300, 200);
        //让组件显示
        frame.setVisible(true);
        //改变窗口图标
        Image image;
       try{ image= ImageIO.read(new File("图片路径"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //获取标题
       System.out.println(frame.getTitle());
 }
}

JDialog,它是Swing的另一个顶级容器,它与Dialog一样都表示对话框窗口。JDialog对话框可分为两种,分别是模态对话框和非模态对话框。模态对话框是指用户需要处理完当前对话框后才能继续与其他窗口交互对话框,而非模态对话框是允许用户处理对话框的同时与其他窗口交互的对话框。

JDialog案例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class jdialog {
    public static void main(String[] args) {
        //建立两个按钮
        JButton btn1=new JButton("模态对话框");
        JButton btn2=new JButton("非模态对话框");
        //创建并设置JFrame容器窗口
        JFrame f=new JFrame("DialogDemo");
        //设置窗口尺寸
        f.setSize(300,250);
        //设置窗口显示位置
        f.setLocation(300,200);
        f.setLayout(new FlowLayout());//为内容面板设置布局管理器
        //在Container对象上添加按钮
        f.add(btn1);
        f.add(btn2);
        //设置单击关闭按钮默认关闭窗口
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //让组件显示
        f.setVisible(true);
        final JLabel label=new JLabel();
        //定义一个JDialog对话框
        final JDialog dialog=new JDialog(f,"Dialog");
        dialog.setSize(220,150);//设置对话框大小
        dialog.setLocation(350,250);//设置对话框位置
        dialog.setLayout(new FlowLayout());//设置布局管理器
        final JButton btn3=new JButton("确定");//创建按钮对象
        dialog.add(btn3);//在对话框的内容面板添加按钮
        //为“模态对话框”按钮添加单击事件
        btn1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //设置对话框为模态
                dialog.setModal(true);
                //如果JDialog窗口中没有添加JLabel标签,就把JLabel标签加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否则修改标签的内容
                label.setText("模态对话框,单击确定按钮关闭");
                //显示对话框
                dialog.setVisible(true);
            }
        });
        //为“非模态对话框”按钮添加单击事件
        btn2.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //设置对话框为非模态
                dialog.setModal(false);
                //如果JDialog窗口中没有添加JLabel标签,就把JLabel标签加上
                if(dialog.getComponents().length==1){
                    dialog.add(label);
                }
                //否则修改标签的内容
                label.setText("非模态对话框,单击确定按钮关闭");
                //显示对话框
                dialog.setVisible(true);
            }
        });
        //为对话框中的按钮添加单击事件
        btn3.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.dispose();
            }
        });
    }
}

补充小知识:JPanel

扩展上面的JFrame案例

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class GUI_1常用方法 extends JFrame {
    public static void main(String[] args) {
        //使用SwingUtilities工具调用createAndShowGUI()方法显示GUI程序
        SwingUtilities.invokeLater(GUI_1常用方法::createAndShowGUI);
    }
    private static void createAndShowGUI() {
        //创建并设置JFrame容器窗口
        JFrame frame = new JFrame("JFrameText");
        //设置并关闭窗口时的默认操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口标题
        frame.setTitle("窗口");
        //设置窗口尺寸
        frame.setSize(350, 300);
        //设置窗口显示位置
        frame.setLocation(300, 200);
        //让组件显示
        frame.setVisible(true);
        //改变窗口图标
        Image image;
       try{ image= ImageIO.read(new File("图片路径"));
           frame.setIconImage(image);
       }catch (IOException e){
           e.printStackTrace();
       }
        //获取标题
       System.out.println(frame.getTitle());
        //创建JPanel对象
        JPanel jp=new JPanel();
        //设置字体大小
        Font font=new Font("仿宋",Font.BOLD,20);
        //JLabel() ==>创建一个没有图像的 JLabel实例,标题为空字符串。
        //JLabel(String text) ==>使用指定的文本创建一个 JLabel实例。
        JLabel jl1=new JLabel("用户名:");
        jl1.setFont(font);//设置统一的字体,看起来更美观整齐
        //JTextField(String text) ==>构造一个新的 TextField ,用指定的文本初始化。
        JTextField jf1=new JTextField("请输入用户名:",20);
        jf1.setFont(font);//设置统一的字体
        JLabel jl2=new JLabel("密码:");
        jl2.setFont(font);//设置统一的字体
        JTextField jf2=new JTextField("请输入密码:",20);
        jf2.setFont(font);//设置统一的字体
        //建立按钮
        JButton jb1=new JButton("登录");
        jb1.setFont(font);//设置统一的字体
        JButton jb2=new JButton("退出");
        jb2.setFont(font);//设置统一的字体
        //将这些文本和按钮添加到JPanel对象中,然后再将JPanel对象添加到JFrame对象中去
        jp.add(jl1);
        jp.add(jf1);
        jp.add(jl2);
        jp.add(jf2);
        jp.add(jb1);
        jp.add(jb2);
        frame.add(jp);
        //让组件显示
        frame.setVisible(true);
    }
}

到此这篇关于Java深入学习图形用户界面GUI之创建窗体的文章就介绍到这了,更多相关Java GUI创建窗体内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体

    复制代码 代码如下: import java.awt.event.WindowEvent;import java.awt.event.WindowStateListener; import javax.swing.JFrame; public class WinFrame extends JFrame { public WinFrame(){  this.setName("Window 窗口状态");  this.setSize(300,300);  this.setDefaultCl

  • Java深入学习图形用户界面GUI之创建窗体

    GUI全程是Graphical User Interface,即图形用户界面.顾名思义,GUI就是可以让用户直接操作的图形化界面,包括窗口.菜单.按钮.工具栏和其他各种图形界面元素.目前,图形用户界面已经成为一种趋势,几乎所有的程序设计语言都提供了GUI设计功能. Java针对GUI设计提供了丰富的类库,这些类分别位于java.awt和javax.swing包中,简称为AWT和Swing.AWT引入了大量的Windows函数,因此称为中重量级组件.Swing是以AWT为基础构建起来的轻量级的图形

  • Java深入学习图形用户界面GUI之事件处理

    Swing组件中的事件处理专门用于响应用户的操作,例如,响应用户的鼠标单击.按下键盘等操作.在Swing事件处理的过程中,主要涉及三类对象: 1.事件源:事件发生的场所,通常是产生事件的组件,如窗口.按钮.菜单等. 2.事件对象:封装了GUI组件上发生的特定事件(通常就是用户的一次操作). 3.监听器:负责监听事件源上发生的事件,并对各种事件做出相应处理(监听器对象中包含事件处理器). 实现Swing事件处理的主要步骤如下: 1.创建事件源:除了一些常见的按钮.键盘等组件可以作为事件源外,还可以

  • Java深入学习图形用户界面GUI之布局管理器

    布局管理器: 组件在容器中的位置和尺寸是由布局管理器决定的,每当需要重新调整屏幕大小时,都要用到布局管理器.Swing常用的布局管理器有4种,分别是FlowLayout(流式布局管理器).BorderLayout(边界布局管理器).GridLayout(网格布局管理器).GridBagLayout(网格包布局管理器).Swing容器在创建时都会使用一种默认的布局管理器,在程序中可以通过调用容器对象的setLayout()方法设置布局管理器,通过布局管理器可自动进行组件的布局管理. FlowLay

  • php7 图形用户界面GUI 开发示例

    本文实例讲述了php7 图形用户界面GUI 开发.分享给大家供大家参考,具体如下: 一.下载指定系统扩展 http://pecl.php.net/package/ui http://pecl.php.net/package/ui/2.0.0/windows 由于我的系统是64位win10,php版本是7.1,所以选择7.1 Thread Safe (TS) x64,linux用户可以自行下载源码包,编译安装. 解压php_ui-2.0.0-7.1-ts-vc14-x64.zip,把php_ui.

  • Java图形用户界面设计(Swing)的介绍

    前言 Swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格.Swing开发人员只用很少的代码就可以利用Swing丰富.灵活的功能和模块化组件来创建优雅的用户界面. Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本

  • Python学习开发之图形用户界面详解

    目录 1. 丰富的图形开发界面库 1.1 tkinter 2 wxPython 概述 2.1 安装 wxPython 3 Jython 3.1 Jython 安装 3.2 在 Eclipese 中配置 Jython 4. 结语 1. 丰富的图形开发界面库 图形用户界面(Graphical User Interface,GUI),Python 提供了丰富的图形开发界面库(Python GUI): 1.1 tkinter tkinter 模块(TK接口)是 Python 的标准 TK GUI 工具包

  • python 实现GUI(图形用户界面)编程详解

    Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里.Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中. wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允

  • java图形用户界面实现菜单功能

    本文实例为大家分享了java图形用户界面实现菜单功能的具体代码,供大家参考,具体内容如下 题目:编写一个图形用户界面,实现菜单的功能.有3个一级菜单项:File.Edit和Help.在File菜单项中,有3个二级菜单项:New.Open和Save.在Edit菜单项中,有3个二级菜单项:Copy.Cut和Paste.在Help菜单项中,有一个二级菜单项About.对于每一个二级菜单项,不必真正实现其功能,只要演示它能响应鼠标单击事件即可,如弹出一个对话框或打印一句话. import java.aw

  • 基于Python的GUI图形用户界面编程详细讲解

    目录 前言 常用的GUI库 1.Tkinter 2.wxPython 3.PyQT 基于tkinter模块创建GUI程序步骤 主窗口设置 主窗口位置和大小 GUI编程整体描述 常用组件汇总列表 GUI应用程序类的经典写法 总结 前言 在最早程序的设计中,程序和用户的交互都是通过控制台来完成的,而GUI(Graphics User Interface),即图形用户编程,是Python 所提供的一个丰富的组件,可以快速的实现使用图形界面和用户交互. 常用的GUI库 1.Tkinter tkinter

  • Java图形界面GUI布局方式(小结)

    流式布局 采用流式布局会将元素按从左到右的顺序排列,如果一个元素在一行中放不下,那这个元素会另起一行依然按照从左到右的顺序排列 示例: 代码 public class Test { public static void main(String[] args) { // 创建窗口 JFrame jFrame = new JFrame(); // 设置窗口名称 jFrame.setTitle("hello"); // 创建流式布局管理器 对齐方式为左对齐 LayoutManager lay

随机推荐