Java图形用户界面编程

GUI代表图形用户界面(Graphical User Interface),Java API中提供了两套组件用户支持编写图形用户界面,包括AWT和Swing。

AWT使用本地操作系统的代码资源,被称为重量级组件。

Swing建立在AWT提供的基础之上,同时使用AWT相同的事件处理机制。Swing组件是轻量级的GUI组件,完全有纯Java代码编写,不依赖于任何特定平台,采用MVC架构方式来设计组件类。它将表示层分为三个分离的部分,分别是模型(model)、视图(view)、控制器(controler)。模型存储定义组件的数据,视图从模型中的数据创建组件的可视化表示,控制器处理用户与组件的交互操作,并在必要时更改模型或视图以响应用户行为。

开发Swing时因为视图和控制器存在很强的依赖关系,于是将视图和控制器组合称为UI委托的带个逻辑实体,所以Swing方法也被称为模型-委托架构或分离模型架构。

容器和组件

    容器是用来放置其它组件特殊类型的组件;组件是独立的可视化控件。一个组件要显示出来就必须放置在一个容器内,容器也是组件,容器也可以放置其它容器。

    

    容器分为重量级容器和轻量级容器。

    重量级容器:

        包括JFrame(窗体)、JDialog(对话框)、JWindow(窗口)、JApplet(小程序)。因为都继承AWT的Container,所以被成为重量级容器。每个程序至少要有一个重量级容器才可以提供图形化用户界面。

      每个包含层次必须从重量级容器开始,重量级容器不能包含在其它任何容器中。我们所接触到的是层次面板(分为内容面板和可选的菜单栏),Swing的组件都放在内容面板中。

    轻量级容器:

        包括常用的面板Jpanel、分隔窗格、滚动窗格、标签窗格、工具条,它们和普通的组件一样继承自Swing类的JComponent,故成为轻量级容器。它们的存在主要是为了定位其它组件。

    

    组件:

      按钮(类JButton)、单选按钮(类JRadioButton)、复选框(类JCheckBox)、组合框(类JComboBox)、列表框(类JList)、文本字段(类JTextField)、纯文本区域(类JTextArea)等  都继承自Swing类的JComponent。

组件在容器中的布局:

      组件要想在程序中显示就必须添加到容器中,组件在容器中的排列的形式根据是否使用布局管理器,以及使用何种类型的布局管理器来决定。

      如果需要将组件在容器中精确定位,就必须使用容器的setLayout(null)方法,然后调用组件的setBounds()方法设置组件的边界。

组件采用精确定位后不支持窗口的改变。

      AWT和Swing API 内置布局管理器

          流式布局管理器FlowLayout(JPanel组件默认采用FlowLayout布局管理器):

              安装组件添加顺序从左到右排列,可以控制容器组件居中、居左、居右,可以控制组件的垂直和水平间距。

          BorderLayout管理器(不是用来放置组件的,常用于放置中间容器):

              分为南北中东西五个区域,其中中间的面积和权力最大。

              Jframe默认的管理器。

              

事件驱动编程

        根据事件发生而执行代码的编程方式称为事件驱动编程。

        例子:通过点击一个按钮触发一个事件,按钮是该事件的事件源,将监听对象注册到按钮上,当一个动作事件发生在按钮上时,按钮通过调用定义的监听器的actionPerformed()方法来探知监听器。

        

      事件和事件源

          运行Java GUI程序时,程序负责与用户交互,而事件则驱动程序的执行。事件用于描述发生了什么事情,可以由外部用户的行为触发,例如鼠标移动、按钮点击、键入字符等,也可以由程序的内部活动触发,例如数据模型发生变化,程序可以选择响应或者忽略事件。

          生成一个事件并触发它的组件成为事件源。一个事件是一个事件类的实例对象,事件类的根对象是java.util.EventObject。

      事件监听器、注册和处理事件

          事件源触发一个事件但是事件源本事不处理,而是委托给对该 事件有兴趣的对象来处理。这个被委托来处理事件的对象,被称为事件监听器。

        

        成为事件源上的一个事件监听器的方法:

            1.创建一个监听器对象   监听器对象必须是对应的事件监听器接口的实例。Java为每种事件类型都提供了监听器接口。

            2.将监听器对象注册到事件源上。

        

              

  

时间: 2024-12-28 16:22:12

Java图形用户界面编程的相关文章

多线程编程、java图形用户界面编程、Java I / O系统

线程概述 进程:是一种 “自包容”的运行程序 线程是进程当中的一个概念,最小处理单位 THread类.Runnable接口.Object类 创建新执行线程有两种方法:1:一种方法是将类声明为Thread子类,该子类Thread类为run方法 启动:调start()方法 编写一个继承类的类,然后在类中重写Thread类的run()方法 编写一个实现Runnable接口,然后将该类的的实例与java.lang.Thread对象联系在一起 char能够转换int(4个字节),Int强制转换char(2

I/O系统,多线程、图形用户界面编程

多线程 进程与线程区别: 进程需要分配独立的内存空间:线程在同一内存空间中工作,可以共享同一块内存和系统资源 与Java相关的API: 1)Thread类 方法:start()启动: urn() : getName()获取线名:    setName()改变线名:   setPriority()设置优先级:   setDaemon()守护线程:   join()等待:   interupt()中段本线程:    isAlive()判断运行是否仍在生命周期之中:   yield()静态,停止线程运

多线程编程、Java I/O系统和Java图形界面编程

多线程编程: 一个正在运行的程序通常称为一个进程,每一个任务称为一个线程,中能够在一个程序内运行多线程的程序称为多线程程序. 线程与进程的区别:①每个进程都需要操作系统为其分配独立的内存空间: ②而同一个进程中的所有线程都在同一内存空间工作,这些线程可以共享同一块内存和系统资源. 线程的创建: 1)通过继承Thread类来创建线程: ①创建一个继承Thread类的类: ②在创建的Thread子类中重写run()方法,在方法中写入想要线程运行的代码: ③创建Thread子类的实例: ④通过调用该实

java图形用户界面程序

GUI(Graphical User Interface) 定义:一个程序中,用户可以可以看见和与之交流的部分. 支持图形用户界面的两套组件: 1,AWT 2,Swing 建立步骤: 建立容器-建立组件-将组件添加到容器-设置布局 Swing中的重量级容器: 继承自AWT中的Container类,为其他容器和组件提供绘制位置 有JFrame,JDialog,JWindow,JApplet; Swing中的轻量级容器: 继承自Swing类的JComponent,为了方便其他组件的定位 有JPane

java图形用户界面认知

为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置.组件类是创建用户界面的,例如,JButton,JLabel和JTextField.容器类是用来包含其他组件的,例如,JFrame,JPanel和JApplet.辅助类是用来支持GUI组件的,例如,Graphics,Color,Font,FontMetrics和Dimension. 一.组件类 Component 类的实例可以显示在屏幕上.Componen

Java图形界面编程

一:基本概念 AWT(Abstract Window Toolkit) 抽象窗口工具包,SUN 公司提供的用于图形界面编程(GUI)的类库.但是AWT得实现严重依赖于下层操作系统,所以导致组件AWT的外观取决于程序运行的平台.AWT的类和接口都定义在java.awt包中. Swing    Swing组件是实在AWT基础上开发的新型GUI组件,它是纯Java实现的轻量级(light-weight)组件,它不依赖任何特定平台,Swing组件在不同平台具有一致性的表现,但是Swing应用程序的界面外

转:python 实现GUI(图形用户界面)编程

转:https://blog.csdn.net/dongfei2033/article/details/77971197/ Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里.Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在

Java图形用户界面布局控制Layout练习

尝试搭建登录对话框,包含两个文字标签(用户名.服务器IP),两个文本输入条(用户名.服务器IP),一个按钮(登录),按照自己认为合适的方式布局.  我把GridLayout(网格布局).BorderLayout(边界布局).FlowLayout(流式布局)三种布局进行了比较并且做了尝试.  终于到了使用Java得到图形反馈的结果,心里还有些小激动呢.虽然只是完成了界面的展示,没有功能的实现,但是成就感还是蛮大的,而且查询JDK文档真的非常有收获. package gui; import java

19 图形用户界面编程 - 《Python 核心编程》

?? 引言 ?? Tkinter 与Python 编程 ?? Tkinter 模块 ?? Tk 组件库 ?? Tkinter 使用举例 ?? 标签.按钮与进度条组件 ?? 一个使用 Tk 的中级范例 ?? 其他 GUI 简介(Tix, Pmw, wxPython, PyGTK) ?? 相关模块和其他 GUI Python 的默认GUI 工具集是Tk,它也是我们将使用的最基本的GUI 工具集. 我们可以通过Python 接口Tkinter 来使用Tk(Tkinter 正是“Tk 接口”之意). T