《Java核心技术 卷1 基础知识》七

Posted ase265

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java核心技术 卷1 基础知识》七相关的知识,希望对你有一定的参考价值。

《Java核心技术 卷1 基础知识》

第10章 图形程序设计

在Java1.0刚出现时,就包含了一个基本GUI程序设计的类库,即抽象窗口工具箱(Abstract Window Toolkit,AWT)
基本AWT库采用将处理用户界面元素的任务委派给每个目标平台(如windows、Macintosh等)的本地GUI工具箱的方式,
由本地工具箱负责用户界面元素的创建和动作

但由于在不同的平台上,操作行为有一些微妙的差别
因此,AWT也由“一次编写,随处使用”变为“一次编写,随处调试”

最后Sun公司和Netscape公司合作,创建了一个名为Swing的用户界面库,可以使得所有平台上的外观和动作一样
值得注意的是,Swing没有完全替代AWT,而是基于AWT框架之上
Swing仅仅提供了能力更为强大的用户界面组件

在Java中,顶层窗口被称为框架(frame),
在AWT中是Frame类,在Swing中是JFrame

Swing位于javax包中,javax被认为是java的扩展包,而不是核心包
所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件

Event.Quue.invokeLater(()->
{
statements
});

但实际上许多程序并没有在事件分派线程中初始化用户界面,而是直接在主线程中完成初始化
但由于Swing太过复杂,无法保证直接在主线程初始化的安全性

AWT和Swing中框架和组件类的继承层次
技术图片

如果没有明确地指定框架的大小,所有框架的默认值为0*0像素
对于专业程序来说,为了确定合适的框架大小,需要检查屏幕的分辨率,并根据屏幕的分辨率来设置框架的大小
可以通过调用Toolkit类的静态方法getDefaultToolkit来获取屏幕大小

Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenWidth = screenSize.width;//获取屏幕的宽
int screenHeight = screenSize.height;//获取屏幕的长
setSize(screenWidth/2,screenHeight/2);//设置窗口大小
setLocationByPlatform(true);

在java中,框架被设置为放置组件的容器,可以将菜单栏和其他的用户界面元素放置在其中
Jframe的结构如图:
技术图片

可以看出Jframe中有四层窗格,Swing程序员应该关心的是内容窗格
若要在框架上显示组件,则需要往内容窗格上添加组件

往框架Frame上添加内容的一般步骤为:
新建一个内容面板
新建控件,如Button
往内容面板中添加Button
往框架中添加内容面板

在Java中,所有的绘制必须使用Graphics对象,其中包含了绘制图案、图像和文本的方法
但Graphics的操作能力有限,Java SE 1.2 引入了Java 2D库,这个库实现了一组功能强大的图形操作
要想使用Java 2D库绘制图形,需要获得一个Graphics2D类对象,该类为Graphics类的子类

以上是关于《Java核心技术 卷1 基础知识》七的主要内容,如果未能解决你的问题,请参考以下文章

《java核心技术 卷1 基础知识》二

《Java核心技术 卷1 基础知识》三

《Java核心技术 卷1 基础知识 原书第9版》pdf

《Java核心技术 卷1 基础知识》四

《Java核心技术 卷1 基础知识》九

Java核心技术 卷1 基础知识-第一天