GUI编程

前言:告诉大家应该怎么学?

  • 这是什么?
  • 它怎么玩?
  • 该如何在我们平时运用?

组件

  • 窗口
  • 弹窗
  • 面板
  • 文本框
  • 列表框
  • 按钮
  • 图片
  • 监听事件
  • 鼠标
  • 键盘事件
  • 破解工具

一、是什么

  1. GUI是图形界面编程

  2. GUI的核心技术:Swing AWT

  3. GUI缺点:界面不美观;需要jar环境

二、为什么

为什么我们要学习

  1. 可以写出自己心中想要的一些小工具

  2. 工作的时候,也可能需要维护到swing界面,(概率极小!)

  3. 了解MVC架构,了解监听!

三、怎么做

1、AWT

1.1 AWT介绍

  1. 包含了很多类和接口!
  2. 元素:窗口、按钮、文本框

1.2 组件和容器

1.2.1. Frame(容器)
  1. package com.gui;
  2. import java.awt.*;
  3. public class TestFrame {
  4. public static void main(String[] args) {
  5. Frame frame =new Frame("我的第一个JAVA图像界面窗");
  6. frame.setVisible(true);
  7. frame.setSize(200,200);
  8. frame.setBackground(Color.BLUE);
  9. frame.setLocation(200,200);
  10. frame.setResizable(false);
  11. }
  12. }

展示多个窗口

  1. package com.gui;
  2. import java.awt.*;
  3. public class TestFrame02 {
  4. //展示多个窗口
  5. public static void main(String[] args) {
  6. MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.BLUE);
  7. MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.GREEN);
  8. MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.MAGENTA);
  9. MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.YELLOW);
  10. }
  11. }
  12. class MyFrame extends Frame{
  13. static int id = 0;//可能存在多个窗口,我们需要一个计数器
  14. public MyFrame(int x,int y,int w,int h,Color color){
  15. super("Myframe"+(++id));
  16. setBackground(color);
  17. setBounds(x,y,w,h);
  18. setVisible(true);
  19. }
  20. }

1.2.2. Panel(面板)
  1. package com.gui;
  2. import java.awt.*;
  3. import java.awt.event.WindowAdapter;
  4. import java.awt.event.WindowEvent;
  5. public class TestPanel {
  6. public static void main(String[] args) {
  7. Frame frame = new Frame();
  8. Panel panel = new Panel();
  9. //对窗口设置布局
  10. frame.setLayout(null);
  11. //窗口的坐标
  12. frame.setBounds(300,300,500,500);
  13. frame.setBackground(Color.GREEN);
  14. //相对于frame的面板坐标
  15. panel.setBounds(50,50,400,400);
  16. panel.setBackground(Color.BLUE);
  17. //将面板添加到窗口
  18. frame.add(panel);
  19. //设置可见性
  20. frame.setVisible(true);
  21. //监听事件,监听窗口关闭事件 System.exit(0)
  22. //适配器模式
  23. frame.addWindowListener(new WindowAdapter() {
  24. @Override
  25. public void windowClosing(WindowEvent e) {
  26. System.exit(0);//结束程序
  27. }
  28. });
  29. }
  30. }

1.2.3. 布局管理器
  1. 流式布局

    1. package com.gui;
    2. import com.sun.media.jfxmedia.events.NewFrameEvent;
    3. import java.awt.*;
    4. public class TestLayout {
    5. public static void main(String[] args) {
    6. Frame frame = new Frame();
    7. //添加组件-按钮
    8. Button button1 = new Button("button1");
    9. Button button2 = new Button("button2");
    10. Button button3 = new Button("button3");
    11. Button button4 = new Button("button4");
    12. //设置为流式布局
    13. frame.setLayout(new FlowLayout(FlowLayout.LEFT));
    14. frame.setVisible(true);
    15. frame.setSize(200,200);
    16. frame.add(button1);
    17. frame.add(button2);
    18. frame.add(button3);
    19. frame.add(button4);
    20. }
    21. }

  1. 东西南北中

    1. package com.gui;
    2. import java.awt.*;
    3. public class TestLayoutBorder {
    4. public static void main(String[] args) {
    5. Frame frame = new Frame();
    6. Button East = new Button("East");
    7. Button West = new Button("West");
    8. Button South = new Button("South");
    9. Button North = new Button("North");
    10. Button Center = new Button("Center");
    11. frame.add(East,BorderLayout.EAST);
    12. frame.add(West,BorderLayout.WEST);
    13. frame.add(South,BorderLayout.SOUTH);
    14. frame.add(North,BorderLayout.NORTH);
    15. frame.add(Center,BorderLayout.CENTER);
    16. frame.setSize(200,200);
    17. frame.setVisible(true);
    18. }
    19. }

  1. 表格布局

    1. package com.gui;
    2. import java.awt.*;
    3. public class TestLayoutGrid {
    4. public static void main(String[] args) {
    5. Frame frame = new Frame();
    6. Button btn1 = new Button("btn1");
    7. Button btn2 = new Button("btn2");
    8. Button btn3 = new Button("btn3");
    9. Button btn4 = new Button("btn4");
    10. Button btn5 = new Button("btn5");
    11. Button btn6 = new Button("btn6");
    12. //设置表格布局 3*2
    13. frame.setLayout(new GridLayout(3,2));
    14. //依次添加
    15. frame.add(btn1);
    16. frame.add(btn2);
    17. frame.add(btn3);
    18. frame.add(btn4);
    19. frame.add(btn5);
    20. frame.add(btn6);
    21. //将表格自动填充于窗口
    22. frame.pack();
    23. frame.setVisible(true);
    24. }
    25. }

GUI编程学习笔记——day01的更多相关文章

  1. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  2. 多线程编程学习笔记——async和await(一)

    接上文 多线程编程学习笔记——任务并行库(一) 接上文 多线程编程学习笔记——任务并行库(二) 接上文 多线程编程学习笔记——任务并行库(三) 接上文 多线程编程学习笔记——任务并行库(四) 通过前面 ...

  3. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  4. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  5. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)

            本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...

  6. 多线程编程学习笔记——async和await(二)

    接上文 多线程编程学习笔记——async和await(一) 三.   对连续的异步任务使用await操作符 本示例学习如何阅读有多个await方法方法时,程序的实际流程是怎么样的,理解await的异步 ...

  7. 多线程编程学习笔记——async和await(三)

    接上文 多线程编程学习笔记——async和await(一) 接上文 多线程编程学习笔记——async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...

  8. 多线程编程学习笔记——使用异步IO(一)

    接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...

  9. 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端

    接上文 多线程编程学习笔记——使用异步IO 二.   编写一个异步的HTTP服务器和客户端 本节展示了如何编写一个简单的异步HTTP服务器. 1.程序代码如下. using System; using ...

随机推荐

  1. Polya定理应用实例

    关于Polya原理的应用经典实例: 问题:用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到只算作一种.问有多少种染色状态. 解:先将棋子表上号: 1 6   2 5   3 4 那么把所有通过旋转 ...

  2. Google coding Style Guide : Google 编码风格/代码风格 手册/指南

    1 1 1 https://github.com/google/styleguide Google 编码风格/代码风格 手册/指南 Style guides for Google-originated ...

  3. Scratch & Flappy Turtle & Flappy Bird & Game

    Scratch & Flappy Turtle & Flappy Bird & Game Flappy Turtle Game https://scratch.mit.edu/ ...

  4. Chrome V8 引擎源码剖析

    Chrome V8 引擎源码剖析 V8 https://github.com/v8/v8 array & sort https://github.com/v8/v8/search?l=Java ...

  5. Taro 版本

    Taro 版本 https://taro-docs.jd.com/taro/versions.html 1.x 1.3.34 https://taro-docs.jd.com/taro/docs/1. ...

  6. ES2020 All in One

    ES2020 All in One ES2020 new features / ES11 ES2020 中的10个新功能 1. BigInt BigInt是JavaScript中最令人期待的功能之一, ...

  7. CPU使用率原理及计算方式

    本文转载自CPU使用率原理及计算方式 CPU:超线程和多核 超线程(Hyper-Threading ) 超线程是Intel最早提出一项技术,最早出现在2002年的Pentium4上.单个采用超线程的C ...

  8. [Android搞机]修改build.prop解决类原生无法链接12、13信道wifi问题

    最近xda找包刷了个机,发现没法搜到12.13信道.所有未本地化的类原生都有此问题. root后打开/system/build.prop 可以用 在build.prop中加入以下几句,重启即可连接12 ...

  9. [报错集]ubuntu中安装oracle java报错

    1.因为版本更新,JAVA15以前的版本都已经没办法下载了,所以要使用oracle java必须使用最近的java15 $ sudo apt-get install oracle-java15-ins ...

  10. 1098 Insertion or Heap Sort——PAT甲级真题

    1098 Insertion or Heap Sort According to Wikipedia: Insertion sort iterates, consuming one input ele ...