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

前言:

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,创建一个窗体。Frame

Frame 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() {

@Override

public void actionPerformed(ActionEvent e) {

System.out.println("按钮被触发了....."+e);

System.exit(0);

}

});

f.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.out.println("window closing");

System.exit(0);

}

@Override

public void windowOpened(WindowEvent e) {

System.out.println("孔雀开屏!window open");

}

});

but.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

if(e.getClickCount() == 2){

System.out.println("mouse double click");

}

}

});

tf.addKeyListener(new KeyAdapter() {

@Override

public 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 点赞

java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI相关推荐

  1. java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上

    标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class  ...

  2. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

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

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

  4. java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx

    java程序设计基础教程第六章图形用户界面编辑.docx 还剩 27页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要 ...

  5. java简述常见的布局极其特点_请简要说明 Android 中五种常见布局的特点。_学小易找答案...

    [简答题]请简要说明有序广播和无序广播的区别 [简答题]请简要说明 Android 程序结构中 AndroidManifest.xml 的功能? [简答题]简述李村站人工办理进路的作业过程. [简答题 ...

  6. 圆形界面 开启相机_「基础篇三」手机摄影拍照界面详解

    ​[基础篇三]手机摄影拍照界面详解 手机拍照对我们来说已习以为常,每天我们都会用手机相机功能或多或少的拍出几张照片.故手机拍照界面对我们来说也不陌生,但手机拍照界面上的那些按钮,那些功能你都用过吗?你 ...

  7. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  8. java char i=2+#039;2#039;;_图说String(三)String中#039;+#039;和StringBuilder的区别

    上⽂文说到,对String的任何修改操作,都会返回⼀一个新的String对象,并且举例例 了了常⽤用的subString的⽅方法调⽤用,今天我们来看String另外⼀一个常⽤用的操作:+ 拼 接操作. ...

  9. java swing事件_第四节 Java Swing事件处理

    第四节:事件处理 一个图形界面完的成只是程序开发中起步的工作,因为要想让每一个组件都发挥其作用,就必须对所有的组件进行事件处理.那么什么是事件处理,所谓事件就表示一个对象发生状态变化.例如,每当按下一 ...

最新文章

  1. Linux下mount FreeBSD分区
  2. 简单计算机面试题库及答案_460道Java后端面试高频题答案版【模块六:计算机操作系统】...
  3. 自定义拦截器用于用户登录的
  4. vm15 安装 mac虚拟机的过程 转载的
  5. c/c++面试试题(三)
  6. 数据结构之顺序队列和链式队列常用的一些操作
  7. 嵌入式环境搭建之NFS
  8. UVA148 ZOJ1166 Anagram checker【DFS】
  9. 基于handsontable的web excel(上)
  10. Linux源码包安装的详细教程
  11. 常用大部分渗透工具下载
  12. 2018最新游戏蛮牛Egret游戏引擎
  13. 创建数据库,库名为考生姓名拼音的缩写,例如考生姓名为张三
  14. 【保险类项目】开发必须了解知道的概念 / 术语
  15. RS485两台设备用了半年,今天突然没数了,并上串口一直时不时有多余FF等乱码输出。单独串口接电脑试都正常,共地就正常了
  16. Windows常用操作—热键(快捷键)
  17. html之设置页面ico图标ie浏览器,如何修改网页小图标,浏览器页面上的图标(favicon.ico)...
  18. Interval数据类型
  19. 智慧矿山无人驾驶模块
  20. rtx腾讯通环境配置

热门文章

  1. 2层,3层,4层交换机的区别与特点!!
  2. UCloud-201809-001:Redis服务未授权访问漏洞安全预警
  3. react-router 按需加载
  4. [每天一个知识点]1-程序员的三大美德(1)
  5. K/3Cloud 分页报表示例参考
  6. 【Java】在Eclipse中使用JUnit4进行单元测试(初级篇)
  7. linux挂载新硬盘,开机自动挂载
  8. ecshop几个价格
  9. 【Android游戏开发十八】解放手指,利用传感器开发游戏!
  10. 如何把你的Windows PC变成瘦客户机