浅谈-java GUI-基础理论

GUI:Graphical User Interface(图形用户接口) 用图形的方式,用来显示计算机操作的界面

Java为GUI提供的API都存在java.awt和javax.Swing两个包中

  • java.awt 包: awt是这三个单词首字母的缩写,翻译过来是抽象窗口工具包,只不过这个包的API,需要调用本地系 统方法实现功能,和本地系统有关联,不利于代码移植,属重量级控件
  • javax.swing 包: 它是在awt的基础上,建立的一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移 植性,属轻量级控件 所以,我们做图形界面开发使用的是swing包下的类。
  • 这里出现了一个名词:组件。 组件是具有图形表示的对象,该图形表示可以显示在屏幕上并且可以与用户交互 比如说,在用户登录中,文本框和按钮等,都是能够表示图形的对象,所以它们都称为组件。 最后,我们来说一下,我们会用到的常用组件

浅谈-java GUI-基础理论

组件:

  • 基本组件:具有图形表示的对象
  • 容器组件:是可以添加组件的组件。也就是在容器中可以通过 add方法添加组件,既可以添加基本组件,也可 以添加容器组件。

  • JButton,这是按钮

  • JLabel,这是用来显示文本内容的,或者展示图片使用
  • JTextFile,这是文本框,用来输入内容的
  • JTextArea,这是文本域,用来输入多行多列的数据的

接着,我们再来看容器组件:

面板也是一个容器,我们常用JPanel,后面用到在具体讲解 窗体,下面是Frame,这是awt包下,而我们使用的是JFrame,这是swing包下。 好了,GUI相关的基础知识我们就先讲到这里

初识窗体

JFrame:窗体(顶层窗体)

JFrame(); —> 构造一个不可见的窗体

JFrame类的构造方法

构造方法 功能说明 public JFrame() 创建一个没有窗口标题的窗口框架 public JFrame(String title) 创建一个窗口标题为title的窗口框架

JFrame成员方法

方法 功能说明 public void setTitle(String title) 设置或修改框架的标题 public String getTitle() 返回框架的标题 public void setBackground(Color c) 设置框架的背景颜色 public MenuBar getMenuBar() 返回窗口中的菜单对象 public void setMenuBar(MenuBar mb) 设置窗口的菜单条 public void remove(MenuComponent mc) 从窗口删除给定的菜单项 public boolean isResizable() 判断窗口是否可以调节大小 public void setVisible(boolean b) 显示或隐藏窗体(取决于b的值-true为显示,-false为隐藏) public void setLocationRelativeTo(component c) 设置窗体位置,null为屏幕中央 public void setAlawysOnTop(boolean c) 设置此窗口是否终究位于其他窗口之上 public void setDefaultCloseoperation(int operation) 设置窗体关闭时默认操作,3–为关闭时退出程序

窗体添加按钮

JButton(); 构造方法

JButton(String text); 创建一个带文本的按钮

JButton() 成员方法

void setSize(int w, int h); 设置按钮的宽高大小 void setLocation(int x, int y); 设置按钮的坐标 void setBounds(int x, int y, int w, int h); 上面两个方法的结合

和窗体相关操作

窗体对象.setLayout(null);————> 取消窗体默认布局


窗体对象.add(按钮对象名) ——————>把按钮加入窗体中

JLabel();显示文本或图像类

构造方法:

JLabel(String text); 创建指定的文本

添加图片时,不能直接加路径,直接使用字符串路径会识别成text文本

需要使用—–ImageIcon(String filename); 的构造方法

例子:

ImageIcon img = new ImageIcon("D\\img\\demo.png"); // 使用转义符\定义完整路径

JLabel jl = new JLabel(img);   // 将图片加入

成员方法:

与其按钮的成员方法

void setBounds(int x, int y, int width, int height):设置位置和大小

JTextField(); 文本输入框

构造方法

JTextField(String text); 文本输入框,有文本默认在输入框里显示

JPassowrdFIeld();密码输入框

构造方法:

JPassowrdFIeld(String text); 密码输入框,有文本默认在输入框里显示

成员方法

void getText(); 获取输入框文本内容

监听事件AcationEvent();

  1. 事件源:事件发生的地方。可以是按钮,窗体,图片等
  2. 事件:发生了什么事情。例如:鼠标点击事件,键盘按下事件等 事件绑定:把事件绑定到事件源上,当发生了某个事件,则触发对应的处理逻辑 事件源对象. addXXXListener(事件);

ActionEvent();构造方法—-用于传递事件,为组件使用的addActionListener();方法接受此类事件的addActionListener()对象

要添加事件的对象名.addActionListener(new ActionListener() { // 这里使用的为匿名类写法

​                @override

​                public void cationPerformed(ActionEvent e){  // 重写该方法,

​                      事件触发代码

​
​                      }

});

低级事件

低级事件是指基于组件和容器的事件,当一个组件上发生特定动作,则触发了低级(组件)事件。

(1)ComponentEvent组件事件:组件尺寸变化、移动。

(2)ContainerEvent容器事件: 组件增加、移动。

(3)WindowEvent窗口事件: 包括用户点击了关闭按钮,窗口得到与失去焦点,窗口最小化等。

(4)FocusEvent焦点事件: 焦点的获得和丢失。

(5)KeyEvent键盘事件: 键按下、释放。

(6)MouseEvent鼠标事件: 包括鼠标按下,鼠标释放,鼠标点击等。

这里不一一列举了

高级事件(语义事件)

高级事件可以不和特定的动作相关联,该类事件具有一般性,取决于触发此事件的含义。

(1)ActionEvent动作事件:对应一个动作事件,它不代表一个特定的动作,而是一种一般性动作(语义)。如按钮按下、JTextField中按Enter键。

(2)AdjustmentEvent调节事件:在滚动条上移动滑块以调节数值。

(3)ItemEvent项目事件:选择项目,不选择”项目改变”。

(4)TextEvent文本事件:文本对象改变。

常用事件处理类

常用组件事件类主要包括:

  • 操作事件类ActionEvent
  • 选项事件类ItemEvent
  • 文本事件类TextEvent
  • 窗口事件类WindowEvent
  • 鼠标事件类MouseEvent
  • 按键事件类KeyEvent

事件处理类

事件源 产生事件的类类型 Button ActionEvent Checkbox ActionEvent、ItemEvent Component ComponentEvent、FocusEvent、KeyEvent、MouseEvent MenuItem ActionEvent Scrollbar AdjustmentEvent TextField ActionEvent TextArea ActionEvent Window WindowEvent

浅谈-java GUI-基础理论

更多的部分可以参考java手册

Original: https://www.cnblogs.com/e-link/p/16643996.html
Author: link-零
Title: 浅谈-java GUI-基础理论

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/617054/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • IO流(序列化流和反序列化流)

    序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 — 流数据(ObjectOutputStream)* 反序列化流:把文本文件中的流对象数据或者网络中…

    Java 2023年6月5日
    076
  • 设计模式之策略模式

    策略模式属于行为型模式,是使用最多的设计模式之一;其作用是针对一组算法,将每一个算法封装到具体共同接口的独立的类种,从而使得他们可以相互转化。策略模式使得算法可以在不影响到客户端得…

    Java 2023年6月5日
    091
  • 五、Java控制流程

    Java流程控制* 用户交互Scanner、Scanner进阶使用 用户交互Scanner ​ 之前我们学习的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一…

    Java 2023年6月7日
    071
  • 最简单的设计模式——单例模式的演进和推荐写法(Java 版)

    前言 如下是之前总结的 C++ 版的;软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的。 概念不多说,没意…

    Java 2023年5月29日
    0108
  • 让mysql支持emoji表情

    什么是emoji emoji就是表情符号 emoji的创造者是日本人栗田穰崇(Shigetaka Kurita) 在数据库的编码不为 utf8mb4,利用java mysql驱动保…

    Java 2023年6月16日
    087
  • Ubuntu下安装多个JDK,并设置其中一个为默认JDK

    由于使用需要,要在机器上同时安装OpenJDK 8和11,并将8设置为默认JDK 首先安装OpenJDK sudo apt-get install openjdk-8-jdk su…

    Java 2023年6月14日
    086
  • 关于GC(中):Java垃圾回收相关基础知识

    Java内存模型 (图源: 深入理解JVM-内存模型(jmm)和GC) 区域名 英文名 访问权限 作用 备注 程序计数器 Program Counter Register 线程隔离…

    Java 2023年5月29日
    084
  • 用Java模拟实现对系统文件以目录的拷贝功能

    要用Java对单个文件拷贝的话,其实思路很简单,循环读取被拷贝文件,放入byte数组,然后写入目标文件。当然我们也可以借助现有的类去完成,如 InputStream中的 trans…

    Java 2023年6月7日
    082
  • 权限管理系统之项目框架搭建并集成日志、mybatis和分页

    前一篇博客中使用LayUI实现了列表页面和编辑页面的显示交互,但列表页面table渲染的数据是固定数据,本篇博客主要是将固定数据变成数据库数据。 一、项目框架 首先要解决的是项目框…

    Java 2023年5月30日
    072
  • 生产数据变更时的脚本准备

    posted @2022-06-21 17:09 雪山上的蒲公英 阅读(23 ) 评论() 编辑 / 返回顶部代码 / Original: https://www.cnblogs….

    Java 2023年5月29日
    090
  • Java项目代码是如何分层的

    1、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,c…

    Java 2023年6月5日
    096
  • 关于工资倒挂

    工资倒挂是指「新员工能力不如老员工,工资却高过老员工」。 如果你是上述老员工 你会觉得不爽,因为不公平。但在多数情况下,其实这件事并不坏: 你打算离职 从新员工工资来看, 你的市场…

    Java 2023年6月16日
    0111
  • VMware Workstation 15Pro 的安装与使用

    1,在VMware Workstation 15 Pro官网下载 2鼠标右键 以管理员身份运行 3,点击下一步 4,勾选[我接受许可协议中的条款],然后点击[下一步] 5点击[更改…

    Java 2023年6月7日
    0100
  • SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类

    精简版的Dapper封装操作类:SqlDapperEasyUtil: /// /// 基于Dapper的数据操作类封装的工具类(简易版) /// Author:左文俊 /// Da…

    Java 2023年6月9日
    087
  • Spring 配置了过滤扫描Bean

    按注解过滤 @ComponentScan(value = "com.icemomo" ,excludeFilters =@ComponentScan.Filte…

    Java 2023年6月7日
    089
  • Spring Security

    下面这个可以参考: posted @2022-07-06 18:30 戈博折刀 阅读(11 ) 评论() 编辑 Original: https://www.cnblogs.com/…

    Java 2023年5月30日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球