欢迎到我的简书查看我的文集

前言:

GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图形用户界面就是以图形的方式来显示你计算机的操作界面, 我们计算机中操作的界面就是 我们Java中常说的图形用户界面, 这样的操作简单明了.

CLI的英文为Command Line User Interface, 是命令行用户接口, 命令行, 这就是我们程序员常常熟悉的, 常见的Dos命令行操作, 这些常用命令式需要记住的, CLI的操作就不那么直观了.

JavaGUI提供了对象在 java.awt 和 javax.swing 两个包中

在早年中, Java.awt为抽象窗口工具包, 英文为 Abstract Window ToolKit, 需要调用本地的系统方法来实现功能需求,属于重量级的控件.

而在awt的基础上,创建了一套图形界面系统, 从而提供了更多的组件, 而且完全是由Java实现的, 增强了移植性, 属于轻量级的控件. 有自己的显示效果, 显示自己的形状, 平台要求低了, 轻量级和体统嵌入的比较浅.

继承关系

Component .png

Button按钮,Label标签,Checkbox复选框,TextComponent文本组件,TextArea文本区域,TextField文本框.

组件里面还能放入组件,在Java中我们叫容器.
window 窗体, Panel 面板
Frame小窗口,Dialog对话框,FileDialog文件对话框

GUI 布局

Flow 流式布局

上左下右

扫雷的格式布局

布局管理

常见的布局管理器:

流式布局管理: FlowLayout, 是从左到右的排列, 是Panel默认的布局管理.

边界布局: 东南西北,中, 是Frame默认的布局管理

网格布局管理: GridLayout

卡片布局管理: CardLayout

网格包布局管理: GridBagLayout

GUI 简单的小窗体

java.awt 包含用于创建用户界面和绘制图形图像的所有类.

java.awt 类 Component

java.lang.Object
-> java.awt.Component

所有已实现的接口:

ImageObserver, MenuContainer, Serializable

component 是一个具有图形表示能力的对象.

component

子类

window

java.awt 类 Frame

java.lang.Object
-> java.awt.Component
-> java.awt Container
-> java.awt.Window
-> java.awt.Frame

实现的接口:

ImageObserver, MenuContainer, Serializable, Accessible

直接已知的子类:

JFrame

Frame是带有标题和边框的顶层窗口.

frame

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;public class FrameDemo {public static void main(String[] args) {//1,创建一个窗体。FrameFrame f = new Frame("my frame");//2, 对窗体进行基本设置。f.setSize(500, 400);f.setLocation(400, 200);//设置布局。f.setLayout(new FlowLayout());//给窗体添加组件。Button but = new Button("my button");//加入一个文本框组件。TextField tf = new TextField(40);//将组件添加到窗体中。f.add(tf);f.add(but);//1,在按钮上添加所需的监听器。but.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被触发了....."+e);System.exit(0);}});f.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("window closing");System.exit(0);}@Overridepublic void windowOpened(WindowEvent e) {System.out.println("孔雀开屏!window open");}});but.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if(e.getClickCount() == 2){System.out.println("mouse double click");}}});tf.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {//1,如何获取录入的内容。通过键盘事件对象获取。
//              char key = e.getKeyChar();
//              int code = e.getKeyCode();
//              System.out.println(code+"...."+KeyEvent.getKeyText(code));//              int code = e.getKeyCode();
//              if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
//                  System.out.println("必须是0-9数字");
//                  e.consume();//直接取消默认处理方式。
//              }if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){System.out.println("ctrl+enter run");}}});//3,让窗体显示。f.setVisible(true);System.out.println("over");}}

事件监听机制

  1. 事件源-组件

  2. 事件 - Event

  3. 监听器 - Listener

  4. 事件处理

Button

java.awt
classButton

java.lang.Object
-> java.awt.Component
-> java.awt.Button

button

监听事件:

addActionListener(ActionListener l)
添加指定的动作侦听器以从此按钮接收动作事件。

窗口适配器

MouseListener

mouseListener

public interface MouseListener extends EventListener

用于在组件上接收“有趣”鼠标事件(按,释放,单击,输入和退出)的侦听器界面。

方法

方法的详细信息:

mouseClicked
void mouseClicked(MouseEvent e)
在组件上单击鼠标按钮时调用

mousePressed
void mousePressed(MouseEvent e)
在组件上按下鼠标时调用

mouseReleased
void mouseReleased(MouseEvent e)
在组件上释放鼠标时调用

mouseEntered
void mouseEntered(MouseEvent e)
当鼠标进入组件时调用

mouseExited
void mouseExited(MouseEvent e)
当鼠标退出组件时调用

方法摘要

文本名称

图形化界面的工具

选择

选择2

选择3

选择4

选择5

//1,获取路径。通过文本框对象完成。String str_dir = jTextField1.getText();//2,将字符串路径封装成File对象。File dir = new File(str_dir);//判断。if(dir.exists()&&dir.isDirectory()){//清空文本区域。jTextArea1.setText("");//3,获取文件名称列表。String[] names = dir.list();for(String name :names){//4,将名字显示到文本区域。jTextArea1.append(name+LINE_SEPARATOR);}}

JFileChooser

public class JFileChooser extends JComponent implements Accessible

注意

事件监听机制流程:

  1. 监听器 - 将监听器注册到事件源

  2. 事件源 - 组件 (外部动作)

  3. 产生事件对象 - 将事件对象传给事件处理方式

菜单继承

继承

MenuComponent
MenuBar,MenuItem,Menu

达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注

  • 小礼物走一走 or 点赞

这是一个有质量,有态度的公众号

喜欢本文的朋友们

欢迎长按下图关注订阅号

收看更多精彩内容

Java中的图形界面编程-GUI相关推荐

  1. java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...

  2. 第58节:Java中的图形界面编程-GUI

    欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...

  3. java中的图形界面如何在JFrame中添加背景色及背景图片

    Java窗口是指JFrame或者Frame 其次,窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色.其实,JFrame的 ...

  4. Python升级之路( Lv11 ) GUI图形界面编程

    Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 第七章 面向对象深入 第八章 异常机制 第九章 ...

  5. Gox语言中使用Sciter库进行GUI图形界面编程-GX23.1

    Sciter是非常优秀的跨平台GUI图形界面编程库,只需附带一个动态链接库文件,就可以实现基于HTML/CSS/TiScript的图形界面,并且已经经过很多公司和商用产品的实际检验,稳定可靠.我们常见 ...

  6. 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...

  7. GUI编程(图形界面编程)上

    GUI编程(图形界面编程)上 定义 图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令.调用文件.启动程序或执行其它一些日常任务.与通过键 ...

  8. java图形界面多线程_多线程编程、Java I/O系统和Java图形界面编程

    多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同 ...

  9. Java图形编程实验总结_实验二java图形界面编程2015级.doc

    实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...

最新文章

  1. QC与IE8 、WINDOWS 7 兼容问题的解决方案
  2. Spark2.x RPC解析
  3. Java中运行Shell for Android
  4. 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解
  5. Spring Boot Swagger3启动出现警告Unable to interpret the implicit parameter configuration with dataType
  6. 没有计算机基础可以学python-学习第一天day1(计算机基础,及python基础)
  7. 我们终将死去,这难道不够美好吗?
  8. qi接收启动协议_基于QI协议的无线充电通信系统
  9. 虚幻引擎4 DEMO打包下载
  10. ftp搭建和定时增量同步实现
  11. 支持8086c语言编程的编译器,8086汇编语言编程软件|8086汇编语言编译器(MKStudio) v1.0免费版 附安装教程_星星软件园...
  12. 按键精灵文字替换,文字查找代码
  13. Linux 开始IntelCPU节能模式
  14. Tom猫游戏代码iOS 素材
  15. 机器学习资源备份,转载自大神https://zhuanlan.zhihu.com/p/26876504
  16. 【软件推荐】Linux的一些好玩的软件
  17. android vivo 模拟器,逍遥安卓打造VIVO华为魅族OPPO小米联想手游安卓模拟器
  18. asp.net保存图片
  19. SSL 域名证书 安装指引
  20. mysql查询是第几条记录_MySQL查询第几行到第几行记录

热门文章

  1. python财务报表书籍_清华大学出版社-图书详情-《从零开始学看财报(白金版)》...
  2. Father f = new Son();
  3. Python——日历模块
  4. [HNOI2004]宠物收养场
  5. 基于matlab的相干信号的doa 估计,基于空间平滑MUSIC算法的相干信号DOA估计(1)
  6. js中一种常见条件判断if(var)的坑
  7. 缓存架构设计之——Redis集群搭建
  8. Springboot快速实现邮件发送
  9. 使用联机搜索求解Wumpus World
  10. 跨考西电计算机科学与技术专业介绍,2021年西安电子科技大学计算机科学与技术(081200)人工智能交叉研究方向_考研专业目录_考试科目_考试范围 - 学途吧...