再见!【JAVA GUI】

本文深入探讨Java图形用户界面(GUI),从AWT和Swing的基础概念出发,详细讲解两者之间的区别、组件、布局管理器和事件处理。通过实例演示,展示如何创建和管理GUI组件,包括标签、文本框、按钮、复选框、下拉列表等,帮助开发者更好地理解和运用Java GUI技术。
摘要由CSDN通过智能技术生成

1.GUI概述

图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

java作为一种面向对象的程序设计语言,它将图形界面设计相关的元素与成分都抽象为类和接口。现主要有java.awt包和javax.swing包

AWT(Abstract Window Toolkit)—抽象窗口工具

Java中用来生成图形用户界面的类库是 java.awt包,它是Java基本包中最大的一个, 定义了所有GUI组件类,以及其它用于构造图形界面的类。

AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行,以实现跨平台特性,但其具体实现效果会有所不同(与本地对等组件相关联)。

Swing——轻量级组件

swing是为了解决awt存在的问题而新开发的包,它以awt为基础的。

Swing包含250多个类(有些是组件, 有些是支持类即继承自awt子类的类,组件的名字都以 J 开 头);

Swing GUI组件=java.awt包的各种GUI组件+新功能;

用轻量组件(没有本地对等组件)代替了AWT的重量组件(与本地对等组件相关联)。

Swing采用的MVC设计范式:

 模型(Model)——用于存储定义该组件的数据(如:大小,颜色,布局....);

视图(View)——用模型中的数据生成该组件的可视化表示(即显示出该组件);

控制器(Controller)——响应用户对该组件的交互操作。

AWT和Swing之间的区别

1.AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。

2.AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

3.AWT用的是重量组件(与本地对等组件相关联);Swing使用的是轻量组件(没有本地对等组件)。

4.AWT是抽象窗口组件工具包,是 java 最早的用于编写图形设计应用程序的开发包;swing是为了解决awt存在的问题而新开发的包,它以awt为基础的。

图形用户界面元素

组件

容器

用户自定义图形界面成分:(1) 绘制图形(2) 显示文字(3) 控制颜色(4) 显示图象(5) 实现动画效果

2.AWT与Swing组件简介

AWT和Swing容器

容器组件的主要作用是包容其他组件,并按照一定的方式组织排列他们。同一个容器中的所有组件 通常总是同时被显示或同时被隐藏。

所有容器组件都是Container类的子类。在Container类中定义了容器所需 要用到的属性及方法。

常用的方法有:setLayout( LayoutManager mgr)   add (Component omp)

JAVA中的常用容器组件:面板 (JPanel)框架 (JFrame)

(1)面板(Panel、JPanel):

Panel属于无边框容器,无边框容器包括Panel和 Applet,其中Panel是Container的子类,Applet 是Panel的子类,它提供空间将其它的组件附在其上。。

使用Panel (JPanel)的好处就是可将相关的组件整合组织起来,让用户接口更为简洁清楚。

一 个 Frame ( JFrame ) 里 面 可 放 入 好 几 个 Panel(JPanel) 。可以在一个Panel(JPanel)上放入其它Panel(JPanel) 。

创建面板:

Panel() //用默认的布局管理器(FlowLayout)

 Panel(LayoutManager layout)//用指定的布局 管理器(Layout)创建面板

(2)框架(Frame、JFrame)

Frame是独立于浏览器的可独立运行的主窗口,通常 用于开发桌面应用程序。 Frame拥有边界和标题栏设 置,大小、内容可以调整。 Frame是容器,里面需要 加入组件,也可以加入菜单,可以在上面绘图。

Frame的创建

Frame()——创建一个没有窗口标题的窗口框架

Frame(String)——创建一个指定窗口标题的窗口框架

注:框架是容器,就像面板一样,用户可以用add()方法将其他组件加到该框架容器中。该容器的缺省布局是BorderLayout。

Frame的主要方法

(来自网络)

与Frame的相关的方法

(1)Swing中的 setDefaultCloseOperation()方法

功能:设置用户在窗体上发起 "close" 时默认执行的操作。

该方法的参数值:

EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法 退出应用程序(仅在应用程序中使用) DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义)

HIDE_ON_CLOSE(在 WindowConstants 中定义)

DISPOSE_ON_CLOSE(在 WindowConstants 中定义)

(2)Swing中的 getContentPane()方法

由于在过去的J2SE版本中,组件(Component)不能直接添加到最高级(top level)的Swing容器,这些容器包括:JFrame, JApplet等。 因此需要调用JFrame的getContentPane()方法获得内容面板,然后该内容面板调用add()方法添加组件。但在J2SE5.0中,我们可以直接添加组件到最高级 的Swing容器,也可以直接在容器内设置布局管理和删除组件。

 

标签(Label、JLabel)

专门用于显示输出,它的功能为显示一行“只读文本”;常用于在屏幕上显示一些提示性,说明性的文字。

Label的构造方法及主要成员方法

Label():用来创建一个没有显示内容的标签

Label(String str):创建一个带初始字符串的标签

Label(String str,int alignment):创建一个带初始字符串及指定对齐方式的标签

void setAlignment(int alignment) :设置标签对齐方式。参数int代表的三种对齐方式 0= Label.LEFT 1= Label.CENTER 2= Label .RIGHT

JLabel的构造方法及类方法

(来自网络)

void setAlignment(int alignment) 方法与Label的一致

JLabel的新增功能:可以提供带图标的标签,图标和文字的位置是可以控制的。

 

文本框(TextField、JTextField、JPasswordField)

单行文本框,用来接收用户从键盘上的输入,也可用来显示输出单行文本信息。

TextField的构造方法及成员方法(常用)

(来自网络)

JTextField的构造方法及成员方法(常用)

与TextField的构造方法及成员方法一致只是构造方法名前以J开头

JPasswordField的构造方法及成员方法(常用)

JPasswordField类是继承JTextField类而来,是一个专门用来输入“密码”的单行文本框。即对用户输入的字符采用密文的形式进行显示,如“****”。

(来自网络)

文本域(TextArea、JTextArea)

文本域允许用户编辑具有多行的文本, 可以用于输出信息,也可以用于接收信息。

注:当JTextArea的内容布满时不会产生滚 动条,而是自动加大文本区的大小。

TextArea的构造方法及成员方法(常用)

(来自网络)

JTextArea的构造方法及成员方法(常用)

(来自网络)

按钮(Button、JButton)

某类创建一个按钮。当 按下该按钮时,应用程序能执行某项动作。产生ActionEvent事件 (通过按下 该按钮触发)

Button的构造方法及成员方法(常用)

构造方法 Button() 创建一个没有标题的按钮
  Button(String label) 创建一个有显示标题的按钮
成员方法 void addNotify() 创建一个按钮对象的同位体(可以改变外观但不改变功能)
  getActionComand() 返回激发动作事件按钮的标题
  String getLabel() 返回按钮的标题
  void setLabel(String label) 设置按钮上的标题

JButton的构造方法及成员方法(常用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值