GUI(图形化界面编程)
  Graphical  User  Interface
  (java.Awt    javax.Swing)

CLI(命令行操作接口)
  Command  line  User  Interface

现在讲解GUI:

  java.Awt: Abstract Windows ToolKit:主要是调用本地系统方法实现(依赖于操作系统),重量级组件。
  javax.Swing: 在Awt的基础上,建立了一套图形界面系统,其中提供了大量组件,完全由java实现,增强了移植性,轻量级组件

我们主要使用 javax.Swing.

  框架的继承关系:

    Object
      |---Component :    组件
        |---Button :     按钮(可添加文字标签)
        |---Label :      标签(封装文字)
        |---Checkbox :   复选框、检查盒
        |---TextComponent :文本组件
          |---TextArea :   文本域(一个多行的文本框)
          |---TextField :   文本框(一个单行的文本框)

        |---Container :     为容器(是一个特殊的组件,可以通过add方法添加别的组件进来。)
          |---Window :    窗口 (在Container上添加了更多功能)
            |---Dialog :   对话框(绑定与其他容器,一般做提醒功能,参数为true锁定后面的窗口)
              |---FileDialog :文本对话框(打开或者保存文件的对话框,靠参数区别功能)
            |---Frame :     框架 (整个框架的主要载体、容器)
          |---Panel :     仪表板

      |---MenuComponent : 菜单组件
        |---MenuBar :菜单栏

        |---MenuItem :菜单条目
          |---Menu :菜单
            |---PopupMenu :动态菜单

布局: 容器中的排列方式

  常见的布局管理器:

    1、FlowLayout(流式布局管理器)。
            从左到右的顺序排列。
            panel默认的布局管理器。
    2、BorderLayout(边界布局管理器)。
            东,南,西,北,中。
            Frame默认的布局管理器。
    3、GridLayout(网格布局管理器)。
            规则矩阵排列。
    4、GridBagLayout(网格包布局管理器)。
            不规则矩阵排列。
    5、CardLayout(卡片式布局管理器)。
            选项卡排雷。

一、界面布局设置

    方法学习: 该包中的方法太多,大部分方法要自己在开发时查阅文档。

    但是Container(窗体)重点掌握。

      Conponent:
        构造方法:看其子类。

        调整组件是否显示: void setVisible(boolean b) 根据参数 b 的值显示或隐藏此组件(参照Frame中最初不可见的构造方法)。

        调整组件大小: void setSize(Dimension d) 调整组件的大小,使其宽度为 d.width,高度为 d.height。

                void setSize(int width, int height) 调整组件的大小,使其宽度为 width,高度为 height。

        调整组件位置: void setLocation(int x, int y) 将组件移到新位置(左上角据窗口的左上角)。

                void setLocation(Point p) 将组件移到新位置(Point为一个坐标对象,其他同上)。

        调整组件位置和大小: void setBounds(int x, int y, int width, int height) 移动组件并调整其大小。

      Container:

        构造方法:看其子类。

        布局设置:
              void setLayout(LayoutManager mgr) 设置此容器的布局管理器。

      Frame:(默认边界布局)

        构造方法:
            Frame() 构造一个最初不可见的 Frame 新实例()。

            Frame(GraphicsConfiguration gc) 使用指定的 GraphicsConfiguration 构造一个最初不可见的新 Frame。

            Frame(String title) 构造一个新的、最初不可见的、具有指定标题的 Frame 对象。

            Frame(String title, GraphicsConfiguration gc) 构造一个新的、初始不可见的、
                            具有指定标题和 GraphicsConfiguration 的 Frame 对象。

    创建图形化界面方法及示例:

      1、创建frame窗体。
      2、对窗体进行基本设置
        如:大小、位置、布局方式、颜色等。。
      3、定义组件。
      4、将组件通过add方法添加到窗体中。
      5、让窗体可以显示,通过 setVisible(true)方法。
      如:
        import java.Awt.*;
        class AwtDemo
        {
          public static void main(String []args)
          {
            Frame f = new Frame("my awt");
            f.setSise(400,500);
            f.setLocation(300,400);
            f.setLayout(new Flowlayout());

            Butten b = new Butten("I\'m a Butten");
            f.add(b);
            f.setVisible(true);
          }
        }

二、事件监听机制(事件在界面创建之后,事件和界面应该分开创建)event

    就是监听组件是否发生动作 (按钮是否被按等),一定发生,判断动作,调用功能做出反应。
      1、事件源(组件)
      2、事件(Event)     (每个事件源都有特有事件和共有事件)
      3、监听器(Listener)   (将可以触发某一个事件的动作(不止一个)都已经封装到监听器中)Adapter(适配器)
      4、事件处理(事件引发后的处理方式)(我们可以处理的)

    方法:   1、明确事件源:各种的组件(包括容器)
          2、通过组件对象调用监视器绑定方法绑定监视器,一个事件源可以发生多种事件,也就可以绑定多种的事件监视器。
          该方法使用对应监视器对象为参数此处常用匿名内部类,
        3、监视器中封装的是对事件的处理方法,这些方法要传入事件对象为参数(形参定义方式),
          而我们要复写这些对事件的处理方法,达到操作事件的的目的。

三、各种事件学习。

    活动事件:
      绑定活动事件监听器:f.addActionListener(new ActionListener()
                {
                  public void actionPerformed(ActionEvent e) {
                    //处理语句
                  }
                });

      绑定键盘事件监听器:bt.addKeyListener(new KeyAdapter()
                {
                  public void keyPressed(KeyEvent e){
                    //处理语句
                  }
                });
      其他事件的监听处理类似。

四、netbeans

      一个用于处理图形界面编译的IDE,可以使用画布功能直接涉及框架的大小及布局,之后自动生成代码,在此基础上
      添加监听等其他代码(简单的监听事件已经在设计步骤处理完毕)。

五、ToolKit

    此类是所有 Abstract Window Toolkit 实际实现的抽象超类。Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。

    

static Toolkit getDefaultToolkit() 
          获取默认工具包。

GUI 设计的更多相关文章

  1. tkinter——GUI设计实操

    1.创建root: from tkinter import * root = Tk() root.title('GUI设计') # root.attributes("-alpha" ...

  2. tkinter的GUI设计:界面与逻辑分离(一)-- 初次见面

    PyQt实现界面与逻辑分离的设计很是方便,详情可以见我的第一篇博文. 不过本文将使用python的标准库 tkinter,来实现界面与逻辑分离的GUI 设计. 我们来设计一个很简单的程序: 目的:长度 ...

  3. Java程序设计11——GUI设计与事件处理A

    1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...

  4. java.awt包提供了基本的java程序的GUI设计工具

    java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...

  5. 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤

    在使用Qt Designer进行GUI设计时,一般常规的步骤都是差不多的,主要步骤包括新建显示窗口.在窗口上按照规划的布局放置组件.设置初始化组件的属性.定义信号和槽函数的连接,一般后三步是每增加一个 ...

  6. 十大开源的.NET用户界面框架 让GUI设计不再犯难

    选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题,因为用户界面相当于一款应用的"门面",直接面向用户.好的UI更能吸引用户,有时甚至成为决定一款应用成败的关键.下面 ...

  7. 四则运算GUI设计

    使用了QT来设计GUI,目前也还在看视频学习中,目前还不会用这个软件,所以具体功能还未实现,初步绘制的界面如下:

  8. JAVA GUI设计中遇到的一个小问题

    最近新学,大牛勿喷.. 写下笔记主要是记录自己常犯的错误,也方便新人解决问题学习参考. 问题:win7下设计GUI,文本框和密码框显示不出来. 我的解决方案: 1. JTextField text = ...

  9. MATLAB GUI设计(线性卷积和循环卷积的比较--笔记)

    原创循环卷积代码,转载需注明出处 线性卷积与循环卷积的比较 实验目的和要求 掌握循环卷积和线性卷积的原理,与理论分析结果比较,加深理解循环卷积与线性卷积之间的关系. 实验内容和步骤 1) 已知两序列X ...

随机推荐

  1. TestNG之使用ReportNG生成测试报告

    TestNG使用ReportNG生成测试报告会更加美观. 依赖包 <!--testNG报告依赖包--> <dependency> <groupId>org.test ...

  2. Uninstall registry

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

  3. 学习 Spring (八) 注解之 Bean 的定义及作用域

    Spring入门篇 学习笔记 Classpath 扫描与组件管理 从 Spring 3.0 开始,Spring JavaConfig 项目提供了很多特性,包括使用 java 而不是 XML 定义 be ...

  4. ASP.NET MVC和Web API中的Angular2 - 第1部分

    下载源码 - 903.5 KB 内容 第1部分:Visual Studio 2017中的Angular2设置,基本CRUD应用程序,第三方模态弹出控件 第2部分:使用Angular2管道进行过滤/搜索 ...

  5. 洛谷CF809C Find a car(数位DP)

    洛谷题目传送门 通过瞪眼法发现,\(a_{i,j}=(i-1)\text{ xor }(j-1)+1\). 二维差分一下,我们只要能求\(\sum\limits_{i=0}^x\sum\limits_ ...

  6. [UOJ317]【NOI2017】游戏 题解

    题意 ​ 小 L 计划进行 \(n\) 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. ​ 小 L 的赛车有三辆,分别用大写字母 A.B.C 表示.地图一共有四种,分别用小写字 ...

  7. 【java+selenium】网易云音乐刷累计听歌数

    背景应该是在去年的时候,刷知乎看到一个问题,大概是说怎么刷网易云音乐个人累计听歌数,然后有一个高赞回答,贴了一段js代码,直接在浏览器console执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...

  8. Centos7安装OpenDCIM-19.01步骤

    Centos7安装OpenDCIM-19.01步骤 openDCIM是一款免费的开源解决方案,用于管理数据中心基础设施.它已经被几家企业组织所使用,由于开发人员的不懈努力,正在迅速完善. openDC ...

  9. 添加 [DataContract] 到 Entity Framework 6.0 POCO Template

    1. 添加using System.Runtime.Serialization; 找到这行 includeCollections ? (Environment.NewLine + "usin ...

  10. 【bfs】仙岛求药

    [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...