Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第58节:Java中的图形界面编程-GUI

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

作者头像
达达前端
发布于 2019-07-04 10:04:25
发布于 2019-07-04 10:04:25
1.9K00
代码可运行
举报
文章被收录于专栏:达达前端达达前端
运行总次数:0
代码可运行

前言:

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

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

JavaGUI提供了对象在 java.awtjavax.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.awtComponent

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

所有已实现的接口:

ImageObserver, MenuContainer, Serializable

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

component

子类

window

java.awtFrame

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

实现的接口:

ImageObserver, MenuContainer, Serializable, Accessible

直接已知的子类:

JFrame

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

frame

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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");
    }

}

事件监听机制

  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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java基础-25(01)图形用户界面编程GUI
1:如何让Netbeans的东西Eclipse能访问。 在Eclipse中创建项目,把Netbeans项目的src下的东西给拿过来即可。 注意:修改项目编码为UTF-8 2:GUI(了解) (1)用户图形界面 GUI:方便直观 CLI:需要记忆一下命令,麻烦 (2)两个包: java.awt:和系统关联较强 javax.swing:纯Java编写 (3)GUI的继承体系 组件:组件就是对象 容器组件:是可以存储基本组件和容器组件的组件。 基本组件:是可以使用的组件,但是必须依赖容器。
Java帮帮
2018/03/16
1.6K0
Java贪吃蛇全代码
  我想贪吃蛇应该是不少90后和00后的童年(我本人是01年的),回想起从前偷偷拿着我爹的诺基亚在被窝里玩贪吃蛇,不禁感慨万分,时间飞逝,没想到10年后的我也可以自己做一个贪吃蛇了。
全栈程序员站长
2022/09/13
1.2K0
java高级语言程序设计_高级程序设计语言包括
AWT(Abstract Window Toolkit)包括了很多类的接口,用于Java Application的GUI(Graphics User Interface图形用户界面)编程。
全栈程序员站长
2022/08/04
8700
java高级语言程序设计_高级程序设计语言包括
JAVA入门学习十二
描述:利用JAVA的Graphical User Interface(图形用户接口)来进行实现展示GUI界面;
全栈工程师修炼指南
2020/10/23
1.1K0
JAVA入门学习十二
事件模型
 事件模型如何理解呢,举个例子,你老婆出门了,让你在家看孩子,难道你每过一分钟就去看一次孩子吗,对于计算机来说,我做一个按钮,难道就一直监听这个按钮使用没有吗,这样的话对于资源消耗太大了,所以最好的办法就是在孩子手上系个铃铛,孩子一有动静铃铛就响,你过去看就行了。反映到计算机上,你可以把某个代码写好,然后告诉某个对象比方说button,当button一执行,就让他自动调用你写好的代码,这样对计算机的压力就并不是很重,这个叫钩子函数,也叫回调函数
mathor
2018/08/03
5430
事件模型
【Java GUI编程】002-AWT学习笔记(二):事件监听、输入框事件监听、画笔、鼠标监听、窗口监听、键盘监听
訾博ZiBo
2025/01/06
1990
【Java GUI编程】002-AWT学习笔记(二):事件监听、输入框事件监听、画笔、鼠标监听、窗口监听、键盘监听
Java-GUI编程之事件处理
前面介绍了如何放置各种组件,从而得到了丰富多彩的图形界面,但这些界面还不能响应用户的任何操作。比如单击前面所有窗口右上角的“X”按钮,但窗口依然不会关闭。因为在 AWT 编程中 ,所有用户的操作,都必须都需要经过一套事件处理机制来完成,而 Frame 和组件本身并没有事件处理能力 。
愷龍
2022/09/26
1.5K0
Java-GUI编程之事件处理
11 - JavaSE之GUI
PS: Panel 的 setBounds 方法中设置的位置大小是相对于相对装入的 Frame 窗口位置和大小的。
Daotin
2018/08/31
2K0
11 - JavaSE之GUI
Java学习之AWT GUI编程
既然前面提到了要重写冰蝎和一些反序列化工具,当然就不能随便说说而已。在编写这些工具还是要使用图形化工具来的方便一些,所以提前把GUI的框架给学习一遍。
全栈程序员站长
2021/04/07
1.5K0
Java初学之华容道游戏
1 package hhuarongdao; 2 3 public class example { 4 public static void main(String args[]) 5 { 6 new Hua_Rong_Road(); 7 } 8 } 1 package hhuarongdao; 2 import java.awt.*; 3 import javax.swing.*; 4 5 import java.awt.event.*; 6 public cl
Gxjun
2018/03/22
1.6K0
Java初学之华容道游戏
GUI编程基础
JokerDJ
2023/11/27
2990
GUI编程基础
javaGUI
欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/ 微博:寒枫–0-0– 知乎:https://www.zhihu.com/people/tao-wu-sheng 豆瓣:YIFEI
yifei_
2022/11/14
4420
Java Swing客户端小项目
以上是第一个小工具,只是用了txt文件进行数据存储,第二个客户端按数据源分为以下两种:
JQ实验室
2022/02/11
2.2K0
java--第11章 图形用户界面编程
     swing:在awt的基础上建立的一套图形界面系统,属于Javax扩展包下。其中提供了更多的组件。而且完全由Java实现增强了移植性,属轻量级控件。
北山啦
2022/11/27
7220
java--第11章 图形用户界面编程
java之十二 事 件 处 理
视频课堂:https://edu.csdn.net/course/play/8222
张哥编程
2024/12/18
1080
java之十二 事 件 处 理
12.6事件处理
要设计一个图形界面程序,不仅仅需要创建窗口和添加图形组件,也需要使组件能够响应并处理用户的操作,这就是“事件处理”。例如,在用户界面上有一个按钮,当用户将鼠标移动到按钮上并单击时,就触发了一个“按钮单击”事件,然后由该命令按钮中的代码来完成相应的操作。因此,事件处理技术是用户界面程序设计中一项重要的技术。事件处理的模型主要是在程序获得事件后,采用怎么样的结构和机制对事件进行处理和响应。
张哥编程
2024/12/19
2520
12.6事件处理
【Java AWT 图形界面编程】菜单组件 ③ ( PopupMenu 菜单组件实现步骤 | 使用 MouseAdapter 设置事件监听器 | 代码示例 )
使用 MouseAdapter , 该类已经实现了上述 5 个抽象函数对应的空方法 , 这里只需要重写感兴趣的方法即可 , 此处只重写 public void mouseReleased(MouseEvent e) 函数 ;
韩曙亮
2023/04/01
8050
【Java AWT 图形界面编程】菜单组件 ③ ( PopupMenu 菜单组件实现步骤 | 使用 MouseAdapter 设置事件监听器 | 代码示例 )
设计模式 | 组合模式及典型应用
树形结构不论在生活中或者是开发中都是一种非常常见的结构,一个容器对象(如文件夹)下可以存放多种不同的叶子对象或者容器对象,容器对象与叶子对象之间属性差别可能非常大。
小旋锋
2019/01/21
1.2K0
Java图形用户界面设计AWT事件处理
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 https://www.captainbed.cn/f1
鲜于言悠
2024/06/23
2570
Java图形用户界面设计AWT事件处理
Java项目实战之天天酷跑
二、功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的障碍物越多跑酷距离越远,玩家吃的金币越多,得分越高。
乔戈里
2020/12/21
2.5K0
Java项目实战之天天酷跑
相关推荐
Java基础-25(01)图形用户界面编程GUI
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验