Java GUI编程(图形化用户界面)之一

曾经终败给现在 2022-05-15 22:50 562阅读 0赞

引言

以前的学习当中,我们都使用的是命令交互方式:
例如:在DOS命令行中通过javac java命令启动程序.
软件的交互的方式:

  1. 1. 命令交互方式
  2. 2. 图形交互方式
  3. 模拟ATM自助取款系统
  4. 案例:[https://blog.csdn.net/m0\_37738838/article/details/81408347][https_blog.csdn.net_m0_37738838_article_details_81408347]

Java提供了专业的API用于开发图形用户界面
GUI–> Graphic User Interface
将要了解GUI API的框架结构,以及GUI组件以及组件之间的关系,容器和布局管理器,颜色,字体等.

分类

1、AWT

Java1.0版本的图形用户界面库,设计目标是帮助程序员编写在所有平台上都能良好表现的GUI程序。为了实现这个目标Java1.0提供了抽象窗口工具集(AWT),但是这个目标并没有达到。AWT在所有的系统上表现都不好。因为:最初版本的AWT是在一个月内构思,设计和实现的(Think in Java )。
Abstract Window Toolkit 抽象窗口工具集
Java将图形用户界面相关的类捆绑在了一起,放在了一个称之为抽象窗口工具集的库中.AWT适合开发简单的图形用户界面,并不适合开发复杂的GUI项目.
位于: java.awt.* 中,定义了很多的组件类,开发者可以直接创建对象加以使用
缺点: 所有的图形界面都依赖于底层的操作系统,容易发生于特定平台相关的故障.
AWT调用本地系统资源生成图形化界面, 依赖本地平台. 1.0

2、Swing

SUN公司对AWT进行了升级,基于AWT,推出了一种更稳定,更通用和更灵活的库.称之为Swing组件库(Swing component)。
既然都是用于GUI设计的组件库,那么为了区分Swing组件类和对应的AWT组件类,Swing组件类都已字母J为前缀.位于:javax.swing.* 中,提供了和AWT中等同的所有的组件类,但是类名的前面多加了一个J.
SWING可以跨平台. 1.2
我们主要学习Swing GUI组件.

3、Java GUI API

GUI API包含的类分为三个部分:组件类(component class) 容器类(container class),和辅助类(helper class)
1.组件类是用来创建用户图形界面的,例如JButton,JLabel,JTextField.
2.容器类是用来包含其他组件的,例如JFrame,JPanel
3.辅助类是用来支持GUI组件的,例如Color,Font

3.1.组件类

在图形用户界面程序中当我们想要创建按钮、复选框和滚动条等这些可以显示在屏幕上的对象,该如何创建。其实这些都属于一类叫做组件类。

AWT中的组件根类

  1. Component
  2. java.lang.Object
  3. java.awt.Component

Swing中的组件根类

  1. javax.swing
  2. JComponent
  3. java.lang.Object
  4. java.awt.Component
  5. java.awt.Container
  6. javax.swing.JComponent
  7. 组件类的实例可以显示在屏幕上.Component类是包括容器类的所有用户界面类的根类是java.awt中的类,对应的Swing中的是Jcomponent.了解了ComponentJComponent都是抽象类.所以不能使用new关键字创建对象.所以需要使用它们的具体的实现类来创建对象.

在AWT中典型图形用户界面中的按钮(Button)、复选框(Checkbox)和滚动条(Scrollbar)都是组件类,都是Component类的子类.
在Swing中的GUI组件,有对应的JButton,JCheckBox,JscrollBar
继承关系图(AWT)
这里写图片描述

3.2.容器类
  1. 容器(Container),是一个特殊的组件,该组件可以通过add()添加其他组件。
  2. 容器类适用于盛装其他GUI组件的GUI组件.例如 Panel Frame Dialog都是AWT组件的容器类.对应的Swing组件的容器类是JPanel JFrame JDialog

3.3.GUI辅助类

  1. 用来描述GUI组件的属性,例如图像的颜色,字体等. 注意:辅助类是在java.awt中的

3.4.GUI运行原理

  1. JDKbin目录中有javaw.exe .javaw.exejavawindow中专门用于执行GUI程序.

4、体验GUI

  1. import javax.swing.JFrame;
  2. import javax.swing.JOptionPane;
  3. public class Demo {
  4. public static void main(String[] args) {
  5. // 创建JFrame
  6. JFrame frame = new JFrame("hello,world");
  7. // 设置尺寸
  8. frame.setSize(200, 100);
  9. // JFrame在屏幕居中
  10. frame.setLocationRelativeTo(null);
  11. // JFrame关闭时的操作
  12. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13. // 显示JFrame
  14. frame.setVisible(true);
  15. }
  16. }

5、Jframe框架

  1. JFrame(框架)是一个容器
  2. 创建一个用户界面需要创建一个JFrame来存放用户界面组件.例如存放按钮,文本框。
  3. javax.swing
  4. JFrame
  5. java.lang.Object
  6. java.awt.Component
  7. java.awt.Container
  8. java.awt.Window
  9. java.awt.Frame
  10. javax.swing.JFrame

5.1.创建一个框架

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. // 创建JFrame
  4. JFrame frame = new JFrame("我的frame");
  5. // 显示JFrame
  6. frame.setVisible(true);
  7. }
  8. }

注意:需要调用setVisible(true)方法后才会显示框架
运行程序会在窗口的左上角显示一个窗口,但是只能显示标题栏,而且关闭JFrame时,程序程序没有停止.
所以需要完成如下需求:
1: 设置Jframe的宽度和高度
2: 让Jframe显示在屏幕中间
3: 关闭Jframe时,程序会停止

5.1.1.设置JFrame的宽度和高度
  1. java.awt.Window.setSize(int width, int height)

查找API文档,查看 setSize方法,可以指定框架的宽度和高度.参数类型是int,注意是以像素为单位,普通的笔记本的屏幕分辨率为1280*800或者1366*768.注意:分辨率表示每平方英寸的像素数.屏幕分辨率越高,屏幕的像素越多.所以分辨率越高看到的细节就越多.
setSize方法被定义在java.awt.Component类中,被Component 的子类java.awt.Window 重写.而Jframe以继承了Windiws类所以也具备该方法.

这里写图片描述

5.1.2.JFrame显示在屏幕中间

setLocationRelativeTo()方法

  1. java.awt.Window.setLocationRelativeTo(Component c)
  2. 设置窗口相对于指定组件的位置。
  3. 如果 c null,则此窗口将置于屏幕的中央。

setLocationRelativeTo(null)方法可以在屏幕上居中显示框架.

如果不想要设置在中间,可以使用

  1. setLocation(200, 100);
5.1.3.关闭JFrame程序停止

setDefaultCloseOperation(int operation)方法

  1. javax.swing.JFrame.setDefaultCloseOperation(int operation)

该方法告诉程序,当框架关闭时结束程序.方法的参数是JFrame 的常量EXIT_ON_CLOSE
添加完毕

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. // 创建JFrame
  4. JFrame frame = new JFrame("我的frame");
  5. // 设置尺寸
  6. frame.setSize(200, 100);
  7. // JFrame在屏幕居中
  8. frame.setLocationRelativeTo(null);
  9. // JFrame关闭时的操作
  10. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  11. // 显示JFrame
  12. frame.setVisible(true);
  13. }
  14. }

发表评论

表情:
评论列表 (有 0 条评论,562人围观)

还没有评论,来说两句吧...

相关阅读

    相关 GUI图形界面概述

    一、GUI概述 1. GUI用图形的方式显示计算机的操作界面,这样更方便直观。 CLI命令行用户接口,就是常见的DOS命令行操作,要记忆很多常用的命令,操作不直观