第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集
前言:
GUI
是图形用户界面,在Java
中,图形用户界面我们用GUI
表示,而GUI
的完整英文为: Graphical User Interface
(图形用户接口), 所谓图形用户界面就是以图形的方式来显示你计算机的操作界面, 我们计算机中操作的界面就是 我们Java
中常说的图形用户界面, 这样的操作简单明了.
CLI
的英文为Command Line User Interface
, 是命令行用户接口, 命令行, 这就是我们程序员常常熟悉的, 常见的Dos
命令行操作, 这些常用命令式需要记住的, CLI
的操作就不那么直观了.
在Java
中GUI
提供了对象在 java.awt
和 javax.swing
两个包中
在早年中, Java.awt为抽象窗口工具包, 英文为 Abstract Window ToolKit
, 需要调用本地的系统方法来实现功能需求,属于重量级的控件.
而在awt
的基础上,创建了一套图形界面系统, 从而提供了更多的组件, 而且完全是由Java实现的, 增强了移植性, 属于轻量级的控件. 有自己的显示效果, 显示自己的形状, 平台要求低了, 轻量级和体统嵌入的比较浅.
继承关系
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
是一个具有图形表示能力的对象.
java.awt
类 Frame
java.lang.Object
-> java.awt.Component
-> java.awt Container
-> java.awt.Window
-> java.awt.Frame
实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知的子类:
JFrame
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");}}
事件监听机制
- 事件源-组件
- 事件 -
Event
- 监听器 -
Listener
- 事件处理
Button
java.awt
classButton
java.lang.Object
-> java.awt.Component
-> java.awt.Button
监听事件:
addActionListener(ActionListener l)
添加指定的动作侦听器以从此按钮接收动作事件。
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)
当鼠标退出组件时调用
图形化界面的工具
//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);}}
public class JFileChooser extends JComponent implements Accessible
事件监听机制流程:
- 监听器 - 将监听器注册到事件源
- 事件源 - 组件 (外部动作)
- 产生事件对象 - 将事件对象传给事件处理方式
菜单继承
MenuComponent
MenuBar,MenuItem,Menu
达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第58节:Java中的图形界面编程-GUI相关推荐
- java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- java中的图形界面如何在JFrame中添加背景色及背景图片
Java窗口是指JFrame或者Frame 其次,窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色.其实,JFrame的 ...
- Python升级之路( Lv11 ) GUI图形界面编程
Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 第七章 面向对象深入 第八章 异常机制 第九章 ...
- 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )
文章目录 一.鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 1.保存当前鼠标指针指向的位置 2.根据鼠标指针指向的位置以及比例重新计算图片位置 二.绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩 ...
- linux命令界面下载kettle,kettle在linux环境中打开图形界面-Go语言中文社区
kettle在linux环境中打开图形界面 kettle数据转换的时候需要图形界面 当运行./spoon.sh时,如果没有图形界面,会出现下面的结果 ./spoon.sh [root@localhos ...
- Java图形编程实验总结_实验二java图形界面编程2015级.doc
实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- Java图形界面编程模拟ATM自助取款系统
本人学习Java时一直想做一个图形界面的程序,所以利用闲暇时间,做了一个Java图形界面编程模拟ATM自助取款系统,界面简洁漂亮,基本功能ATM功能实现. 程序初始时 考号:123456 密码:123 ...
最新文章
- 使用Photoshop制作网页模板
- python 第一行非零_python – 沿着已排序的二维numpy数组的轴查找第一个非零值
- 雅虎中国弃门户回归搜索 推出新搜索产品线
- 解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题
- JS、CSS中的相对路径
- [练习] 用PYTHON来优化网站中的图片
- 11.20 yum:自动化RPM包管理工具
- MySQL高级 - 案例 - 需求及环境准备
- 25个实用编程小技巧
- a标签点击事件_DOM事件机制
- rk3288 android编译环境搭建,RK3288系统编译及环境搭建
- 计算机基础与C语言程序设计书籍,C语言程序设计(21世纪高等学校计算机基础实用规划教材)...
- WIN7上安装OFFICE 2019(未成功)
- cc2640蓝牙数据接收丢包问题
- OFD发票无法打开了
- android测试基站,Android iPhone 手机查看基站信息
- php5.4 eregi,帮助将PHP eregi转换为preg_match
- tpshop——安装使用
- 腾创秒会达分布式无线全向麦克风MHD-G3B-13M分体式大功率扬声器
- iconfont官网中的图标保留其原本的颜色
热门文章
- ftp局域网内实现上传文件资源共享
- Stata重复与去重
- 苹果ID不能登陆:The action could not be completed. Try again
- 神码ai人工智能写作机器人_神经符号AI为我们提供具有真正常识的机器
- 使用three.js模拟地球效果
- 量子计算机 基因工程,2020 ASC世界大学生超级计算机竞赛聚焦量子计算和语言智能...
- 爬了深圳3W+二手房我发现了这些秘密
- 硫酸软骨素-聚乙二醇-卵清蛋白,Chondroitin sulfate-PEG-OVA/Ovalbumin
- LoRa开发7:PingPong系统
- 读书笔记:《机器人SLAM导航核心技术与实战》导读