Java之GUI

article/2025/10/31 22:48:43

(本文为博主JAVA课程学习总结)

GUI —— 图形化用户界面

JFCJava Foundation Classed)是开发GUIAPI

JFC包括:AWTAbstract Window Toolkit抽象窗口工具包)、Swing组件(建立在AWT上功能更强大的图形组件包)、JAVA 2D(实现高质量二维图形)

一.AWT框架

AWT的核心类是Component类。

Component类由基本组件和容器(Container)组件组成。

容器组件主要分为两部分:Window容器和Panel(面板)容器。

*FrameWindow容器的子类,带有标题和缩放角的窗口

Frame容器被创建后是不可见的,所以我们需要人为设置可见性。

常用方法:

显示窗体方法      void setVisibleboolean b)(在Component类中)

设置背景色        setBackground(Color C)

设置尺寸        setSizeint a , int b(a为长,b为宽,单位为像素)

限制位置和尺寸  setBoundint x,int y,int a,int b(x,y为窗体横纵坐标)

Panel容器只能存在于其它的容器中,不能单独显示。应用程序可以将其他组件放在面板提供的空间内,这些组件包括其它面板。

面板的默认布局管理器是FlowLayout布局管理器。

若需要要去掉panel指令的默认管理器,可初始化panel后调用方法panel.setLayout(null).

容器可以容纳容器和组件,故可以制作出复杂的布局。

二.布局管理器

布局管理器:决定组件的位置和大小。

五种布局管理器:

FlowLayout(流式布局管理器)  

 

BorderLayout(边界布局管理器)

 

调用方法:

 

GridLayout(网格布局管理器)

 

CardLayout(卡片布局管理器)

它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到 CardLayout 对象的组件为可见组件。

GridBagLayout(网格包布局管理器)

每个Container都有默认的布局管理器,但是我们可以通过设置空布局管理器(setLayoutnull))来控制组件的大小和位置。

设置空布局管理器后,必须对所有组件调用setLocation()setSize()setBound()进行一个重定位。

 

二.AWT事件处理

AWT事件处理主要针对下述三类对象:

Event(事件):用户对组件的一个操作

Event Source(事件源):事件发生的场所,如Button1

Event Monitor(事件监听器):监听事件是否被处理。

 

引自海同网校

 

(一)AWT事件

AWT相关事件继承于java.awt.AWTEvent类。

这些事件分为两大类:低级事件和高级事件。

1.低级事件:基于组件的事件,如:

ComponentEvent         组建事件:组件尺寸与位置变化

ContainerEvent          容器事件:组件增加、移动

WindowEvent           窗口事件:关闭窗口、窗口闭合、图标化

FocusEvent             焦点事件:焦点的获得和丢失

KeyEvent               键盘事件

MouseEvent  鼠标事件

 

2.高级事件:基于语义的事件,如:

ActionEvent            动作事件:当特定于组件的动作(比如被按下)发生时,由组件(比如 Button)生成此高级别事件。事件被传递给每一个 ActionListener 对象,这些对象是使用组件的 addActionListener 方法注册的,用以接收这类事件。

AdjustmentEvent       调节事件:滚动条的滑动影响数目的改变等

ItemEvent             项目事件:选定或取消选定语义事件

TextEvent              文本事件:对文本对象的改变

 

(二)事件监听器

事件监听器通常是指一个类,通过该类必须实现与该事件类型相对应的接口。

注:事件监听器接口类名称与事件名称相对应。如:MouseEvent —— MouseListener

(三)事件适配器类

某些事件监听接口有对应的事件适配器类。通过事件适配器类,我们可以更简单地实现事件监听,从而缩短程序代码。

java.awt.event中定义的事件适配器类包括以下七个:

MouseAdapter(鼠标适配器)、MouseMotionAdapter(鼠标运动适配器)、KeyAdapter(键盘适配器)、WindowAdapter(窗口适配器)、ComponentAdapter(组件适配器)、ContainerAdapter(容器适配器)、FocusAdapter(焦点适配器)

(四)观察者模式

定义对象间的一对多依赖关系,当一方的对象改变状态时所有的依赖着都会得到通知并自动更新。

观察者模式中任意数目的观察者不必知道彼此的存在。这种状态使代码具有较好的可重用性。

1. Subject(主题)

提供注册和注销观察者的接口

2. Observer(观察者)

为需要在主题变化时获得通知的对象定义一个更新接口

3. ConcreteSubject(具体主题)

主题接口的一个实现类

4. ConcreteObserver(具体观察者)

观察者接口的实现类

 

三.Swing

Swing:用于开发Java应用程序用户界面的开发工具包

Swing控件可跨平台运行。

独立于本地平台的Swing控件称为轻量级控件,依赖于本地平台的AWT控件称为重量级控件。

工具包中所有的包都是以swing作为名称的,如:

javax.swingjavax.swing.event

swing组件的层次框架图:

 

(图片源自海通网校)

创建图形界面的主要步骤:

1.导入Swing

2.设置顶层容器

3.设置按钮和标签等Swing组件

4.将组件添加至容器中

5.处理事件

例:

 

(图片源自海同网校)

 

具体操作方法参照记事本实例。

 

 

代码如下:

package com.iotek.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * Created by asus on 2017/2/15.
 * 记事本实例
 */
public class NotePadDemo {
    public static void main(String [] args){
        new MyFrame("记事本");
    }
}

class MyFrame extends JFrame {


    private JTextArea tv_area = null;
    private JScrollPane s_pane = null;//带滚动条的面板
    private
JMenuBar mb = null;//菜单栏
    private
JMenu m_file = null;//文件菜单
    private
JMenu m_help = null;//帮助菜单
    private
JMenuItem f_item_new = null;//文件菜单的菜单项(子菜单):新建
    private
JMenuItem f_item_open = null;//文件菜单的菜单项(子菜单):打开
    private
JMenuItem f_item_exit = null;//文件菜单的菜单项(子菜单):退出
    private
JMenuItem f_item_about = null;//文件菜单的菜单项(子菜单):关于
    public
MyFrame(String title) {
        super(title);
        init();
        registerListener();
    }
    //初始化相关的组件
    private void
init() {
        tv_area = new JTextArea();
        s_pane = new JScrollPane(tv_area);
        //在需要时出现水平滚动条
        s_pane
.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        Container cpane = this.getContentPane();
        cpane.add(s_pane, BorderLayout.CENTER);
        this.setSize(500, 500);//设置窗体大小
        //初始化菜单
        mb
= new JMenuBar();//新建菜单
        m_file
= new JMenu("文件");//新建文件菜单和其菜单项
        f_item_new
= new JMenuItem("新建");
        f_item_open = new JMenuItem("打开");
        f_item_exit = new JMenuItem("退出");
        m_file.add(f_item_new);
        m_file.add(f_item_open);
        m_file.add(f_item_exit);
        m_help = new JMenu("帮助");//新建帮助菜单和其菜单项
        f_item_about
= new JMenuItem("关于");
        m_help.add(f_item_about);
        mb.add(m_file);//将文件菜单与帮助菜单添加到菜单栏上
        mb
.add(m_help);
        //把菜单栏添加到窗体中
        this
.setJMenuBar(mb);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口的时候退出应用程序
        //设置窗口在屏幕当中居中显示
        //定义一个工具包
        
Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension screenSize = toolkit.getScreenSize();//获得屏幕尺寸信息
        int
screenWidth = screenSize.width;//获得当前屏幕宽度
        int
screenHeight = screenSize.height;//获得当前屏幕度
        int
windowWidth = this.getWidth();//获得当前窗体宽度
        int
windowHeight = this.getHeight();//获得当前窗体高度
        this
.setLocation((screenWidth - windowWidth) / 2, (screenHeight - windowHeight) / 2);//使屏幕居中
        this
.setVisible(true);//显示窗体

    
}

    //给相关组件设置事件监听器
    private void
registerListener() {
        f_item_new.addActionListener(e -> newFile());
        f_item_open.addActionListener(e->openFile());
        f_item_exit.addActionListener(e->exitFile());
        f_item_about.addActionListener(e->aboutFile());
    }
    private void newFile() {
        if (!tv_area.getText().equals("")) {
            int res = JOptionPane.showConfirmDialog(null, "是否保存?", this.getTitle(), JOptionPane.YES_NO_CANCEL_OPTION);
            if (res == JOptionPane.YES_OPTION) {
                //弹出文件保存对话框
                
FileDialog fd = new FileDialog(this, "保存文件", FileDialog.SAVE);
                fd.setVisible(true);
            } else {
                tv_area.setText("");//清空记事本中内容
            
}
        }
    }
    //打开记事本格式文件
    private void
openFile(){
        FileDialog of = new FileDialog(this,"打开文件",FileDialog.LOAD);
        of.setVisible(true);
    }

    //退出
    private void
exitFile(){
        if (!tv_area.getText().equals("")) {
            int res = JOptionPane.showConfirmDialog(null, "是否保存?", this.getTitle(), JOptionPane.YES_NO_CANCEL_OPTION);
            if (res == JOptionPane.YES_OPTION) {
                //弹出文件保存对话框
                
FileDialog fd = new FileDialog(this, "保存文件", FileDialog.SAVE);
                fd.setVisible(true);
            } else {
                tv_area.setText("");//清空记事本中内容
            
}
        }
        //退出程序
        
System.exit(0);
    }

    //关于
    private void
aboutFile(){
        AboutDialog aboutDialog = new AboutDialog(this,"about",true);
    }
}

 


http://chatgpt.dhexx.cn/article/taw30sXa.shtml

相关文章

JAVA--GUI

AWT(Abstract WindowToolkit抽象视窗工具组)包括了很多类和接口,用于java.Application的GUI(Graphics User Interface图形用户界面)编程,GUI的各种元素(如:窗口,按钮,文本框等)由java类来实现。…

JavaGUI------------常用的组件(标签、按钮)

目录 1.标签 2.按钮 1.标签 类:JLabel作用:显示文本或者提示信息 构造函数: new JLabel();new JLabel(Icon icon);//设置图标new JLabel(Icon icon,int aligment);//设置图标水平对齐方式new JLabel(String str,i…

javaGUI基础知识

*注: 作者使用的是 jdk1.8.0_121 版本,可根据下方链接进行下载 jdk1.8.0_121 64位 jdk1.8.0_131 32位 1.基础界面 Frame frame new Frame(); frame.setVisible(true);2.关闭按钮监听 frame.addWindowListener(new WindowAdapter(){Overridepublic void windowClosing(Windo…

Java GUI程序示例

Java GUI程序示例 与命令行界面相比,图形界面对于用户来说更为简便易用。图形用户界面(Graphical User Interface,简称 GUI),关于Java图形用户界面,可参见 https://blog.csdn.net/cnds123/article/details…

JavaGUI界面实现跳转

页面跳转: 思路: 先定义一个类继承JFrame;定义要用的控件,再在构造方法中对定义的控件进行修改,后写出主函数,在主函数中调用构造方法。同理,在idea中,将需要跳转的几个界面置于同一…

JavaGUI显示表格(连接数据库)基础

文章目录 一、界面概览二、代码三、代码解释四、项目全部代码下载地址五、 项目代码说明六、功能更新&#xff1a;根据下拉单内容查询不同数据库6.1 界面概览6.2 用到的主要控件 七、其他相关博客7.1 <a href"https://blog.csdn.net/SKMIT/article/details/106676478&q…

Java-GUI简介

JavaSwing-GUI开发简介&#xff08;1&#xff09; 本期介绍一些GUI的基本知识&#xff0c;开发GUI程序的时候直接用windowbuilder生成框架&#xff0c;傻瓜式拖拽就行&#xff0c;非常简单。 一、布局管理器 1.1:FlowLayout(流式布局) 1.2:GridLayout(网格布局) 1.3:Grid…

Java:GUI编程

文章目录 GUI编程AWT一、AWT介绍二、组件和容器(Component和Container)2.1.Frame2.2.Panel 三、布局管理器3.1.第一种布局管理器——FlowLayout3.2.第二种布局管理器——BorderLayout3.3.第三种布局管理器——GridLayout&#xff08;表格布局管理器&#xff09;3.4.布局练习 四…

Java GUI编程

GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为。 Swing中的大部分组件类位于javax.swing包中。 Sw…

Java GUI入门教程

人生的烦恼&#xff0c;多在于知道的太多&#xff0c;而做的太少。 Java程序中开发GUI页面。下面我主要对Java中实现图像管理、图形绘制和颜色管理等做出介绍&#xff0c;与此同时&#xff0c;Swing包也做出一部分介绍。 像素与坐标 用于表示图像像素数目的称为图像分辨率。显…

【JAVA】GUI编程

GUI的概念 Swing概述 容器组件 布局管理器 常用组件 事件处理 对话框 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序使用起来更加便捷&#xff0c;看上去更加友好。 Swing概述 Swing是纯Java组件&#xff0c;使得…

Java--GUI编程

目录 GUI的概念 Swing概述 ​编辑 容器组件 布局管理器 常用组件 对话框 内部类 GUI的概念 GUI&#xff08;Graphics User Interface&#xff09;&#xff0c;图形用户界面&#xff0c;是指采用图形方式显示的计算机操作用户界面&#xff0c;是计算机与其使用者之间的…

GUI编程(java)

1 GUI的概念 GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff0c;更加方便用户操作。 2 Swing概述 Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行为&#x…

Java GUI 开发

Swing图形用户界面 GUI 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形用户接口&#xff09;是指采用图形方式显示的计算机操作用户界面&#xff0c;包括窗口、菜单、按钮等各种屏幕组件。 Swing Swing是JAVA的一个GUI工具包&a…

GUI (java)

GUI 一.GUI概念二.Swing概述三.容器组件四.常用容器1.窗体(1) JFrame类的构造方法(2) JFrame类的常用方法 2.面板(1)JPanel类的构造方法(2)JPanel类的常用方法 五.布局管理器1. FlowLayout 流式布局(1)FlowLayout构造方法 2.BorderLayout 边界布局3.GridLayout 网格布局 六.常用…

javaGUI

GUI 1.GUI的概念&#xff1a; GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好&#xff1b; 2.Swing概述&#xff1a; Swing是纯Java组件&#xff0c;使得应用程序在不同的平台上运行时具有相同外观和相同的行…

GUI(java)

GUI基本介绍&#xff1a; 1.GUI是什么&#xff1f; GUI的全称为Graphical User Interface&#xff0c;图形化界面或图形用户接口&#xff0c;是指采用图形方式显示 的计算机操作环境用户接口。与早期计算机使用的命令行界面相比&#xff0c;图形界面对于用户来说更为简 便易用。…

Java中的GUI

记录Java中的GUI知识&#xff0c;Java中的GUI相关编程思想是需要我们去理解和掌握的。最好可以使用基础的swing组件去构建出界面。完整记录使用swing组件进行登录页面开发&#xff0c;提供完整代码 文章目录 前言一、swing组件二、swing组件的使用1.窗口2.面板 三、swing组件的…

Java之GUI简单介绍

GUI介绍&#xff08;一&#xff09;常见的组件及简单监听器 第一个窗口程序容器控件JLabel控件简单事件处理文本框JTextFiled复选框JCheckBox下拉列表JComboBox布局管理器LayoutManager边界布局管理器BorderLayout手工布局 前段时间学了GUI&#xff0c;总体上概念还是有点模糊&…

JAVA GUI(图形用户界面)

1.GUI概述 目前,我们编写的程序都是基于控制台的程序GUI&#xff08;Graphical User Interface&#xff09;即图形用户界面&#xff0c;它能够使应用程序看上去更加友好 2.Swing概念 位于javax.swingSwing是纯java组件,使得应用在不同平台中有相同的外观和行为 3.什么是组件,…