当前位置: 首页 > article >正文

《Java核心技术 卷I》第10章 图形用户界面程序设计

图形用户界面(GUI)

Java1.0的时候,GUI类库,抽象窗口工具箱(Abstract Window Toolkit,AWT)。

Swing用户界面库,是Java基础类库(Java Foundation Class,JFC)的一部分。

注释:Swing没有完全替代AWT,而是基于AWT架构之上,Swing编写的程序还需要基本的AWT处理事件。

Swing是指被绘制的用户界面类,AWT是指像事件处理这样的窗口工具箱的底层机制。

挺像H5+CSS3和JS的关系。

选择Swing的原因:

  • Swing拥有一个丰富、便捷的用户界面元素集合。
  • Swing对底层平台依赖的很少,因此与平台相关的bug很少。
  • Swing给予不同平台用户一致的感觉。

Metal观感,SE5以后,默认主题Ocean,JavaSE6以后支持色彩主题个性化,逼真表现动态按钮和变得十分时尚的滚动条。

有趣观感参考:www.javootoo.com,已无法访问。

Synth观感,提供图像文件和XML描述文件来定义新的观感。

Napkin观感,为所有用户界面元素提供一种手绘外观。http://napkinlaf.sourceforge.net

绝大多数Java用户界面程序设计都采用Swing,但有一个特别的例外,Eclipse中SWT图形工具箱。

Oracle开发JavaFX替代Swing,对标Flash竞争。

创建框架

顶层窗口(就是没有包含在其他窗口中的窗口)被称为窗体(frame)。

JFrame拓展于Frame类,不绘制在画布上,而是由用户窗口绘制。

创建窗体

示例:在屏幕中显示一个空框架的简单程序

simpleframe/SimpleFrameTest.java

package simpleframe;

import java.awt.EventQueue;

import javax.swing.JFrame;

public class SimpleFrameTest {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                SimpleFrame frame = new SimpleFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
            
        });
    }

}
class SimpleFrame extends JFrame {
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 200;
    
    public SimpleFrame() {
        super.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }
}

Swing类位于javax.swing包中。

窗体属性

JFrame类本身只包含若干个改变窗体外观的方法。

  • setLocation方法和setBounds方法用于设置窗体的位置
  • setIconImage方法用于告诉窗口系统在标题栏、任务切换窗口等位置显示哪个图标。
  • setTitle方法用于改变标题栏的文字。
  • setResizable利用一个boolean值确定是否允许用户改变窗体的大小。

AWT和Swing中窗体以及组件类的继承层次

java.awt.Component 1.0

  • boolean isVisible()
  • void setVisible(boolean b),获取或设置visible属性,组件最初是可见的,但类似JFrame的顶层组件例外。
  • void setSize(int width,int height) 1.1,将组件大小调整为给定的宽度和高度。
  • void setLocation(int x,int y) 1.1,将组件移到一个新的位置,如果组件不是顶层组件,x和y坐标是容器坐标;否则如果组件是顶层组件(例如:JFrame),x和y坐标就使用屏幕坐标。
  • void setBounds(int x,int y,int width,int height) 1.1,移动并调整组件大小。
  • Dimension getSize() 1.1
  • void setSize(Dimension d) 1.1,获取或设置当前组件的size属性。

java.awt.Window 1.0

  • void setLoactionByPlatform(boolean b) 5,获取或设置locationByPlatform属性,这个属性在窗口显示之前设置时,由平台选择一个合适的位置。

java.awt.Frame 1.0

  • boolean isResizable()
  • void setResizable(boolean b),获取或设置resizable属性,设置了这个属性时,属性值为true,用户可以调整窗体大小。
  • String getTitle()
  • void setTitle(String s),获取或设置title属性,这个属性确定窗口标题栏中的文字。
  • Image getIconImage()
  • void setIconImage(Image image),获取或设置iconImage属性,这个属性确定窗体的图标,窗口系统可能会将这个图标显示为窗体装饰的一部分或者显示在其他位置。

java.awt.Toolkit 1.0

  • static Toolkit getDefaultToolkit(),返回默认的工具箱。
  • Dimension getScreenSize(),返回用户屏幕大小。

java.swing.ImageIcon 1.2

  • ImageIcon(String filename),构造一个图标,其图像存储在一个文件中。
  • Image getImage(),获得该图标的图像。

http://www.kler.cn/a/385778.html

相关文章:

  • 开源共建 | 长安链开发常见问题及规避
  • 代码随想录第46期 单调栈
  • ISP是什么?
  • Amazon Web Services (AWS)
  • 重置docker版本的octoprint管理员账号密码
  • Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报
  • 「QT」几何数据类 之 QRect 矩形类
  • 2025年入门深度学习或人工智能,该学PyTorch还是TensorFlow?
  • 证明正交标架
  • SpringBoot使用自定义注解对API接口进行数据校验
  • golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
  • 伦敦金价格是交易所公布的吗?
  • 基于Multisim直流稳压电源电路(含仿真和报告)
  • linux查看网络配置
  • 任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布
  • 微服务架构面试内容整理-Archaius
  • 编译器、IDE对C/C++新标准的支持
  • 微服务系列六:分布式事务与seata
  • 游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件
  • JavaScript重定向对网络爬虫的影响及处理
  • LVGL 与 QT
  • 大数据分析案例-基于随机森林算法的智能手机价格预测模型
  • tartanvo ubuntu 20.04部署
  • 云计算基础:AWS入门指南
  • 大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
  • YOLO11改进-模块-引入CMUNeXt Block 增强全局信息