科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Java Swing APIs可插拔式外观风格特性应用

Java Swing APIs可插拔式外观风格特性应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java Swing 应用编程接口提供了可插拔式外观风格(PLAF)的特性,它允许Swing 图形用户接口(GUI)小应用根据编程人员定制的外观风格设置来改变界面外观风格。

作者:builder.com.cn 2007年7月4日

关键字: PLAF UI swing java

  • 评论
  • 分享微博
  • 分享邮件

Java Swing 应用编程接口提供了可插拔式外观风格(PLAF)的特性,它允许Swing 图形用户接口(GUI)小应用根据编程人员定制的外观风格设置来改变界面外观风格。

几乎所有现代用户接口框架都结合了视图和控制,无论它们是基于SmallTalk、C++或Java。

Swing将每个组件的视图和控制封装到一个称为UI委托的对象中。

因此,Swing的体系结构被称为模型委托结构而不是模式-视图-控制器结构。理想情况下,模型和UI委托直接的通讯是间接的,允许多个模型与一个UI委托相连,反之亦然。

UI委托

每个UI委托源自一个名为ComponentUI的抽象类。ComponentUI的方法描述了一个UI委托和使用它的组件之间进行通讯的基本原理。

注意的是每个方法都将JComponent作为一个参数。ComponentUI有很多方法,这里只给出几个最重要的:

  • static ComponentUI createUI(JComponent c):该方法通常用来返回UI委托的一个共享实例,该UI委托通过定义ComponentUI子类本身而定义。这个共享实例用于相同类型的组件之间的共享(例如,所有使用金属外观的JButtons共享同样的静态UI委托实例,默认情况下,该委托实例在javax.swing.plaf.metal.MetalButtonUI中定义。
  • InstallUI(JComponent c):该方法在特定的组件上安装ComponentUI。通常会给组件和它的模型添加一个监听器,当状态发生改变时来通知UI委托进行视图的更新。
  • Update (Graphics g, JComponent c)如果组件是不透明的,那么应该描绘它的背景并调用paint(Graphics g,JComponent C)方法。
  • Paint (Graphics g, JComponent c):为了能够正确地描绘,该方法要从组件收集所有需要的信息以及可能的模型。

为了增强特定UI委托的使用,我们可以调用一个组件的setUI()方法,如下所示:

JButton m_button = new JButton();
m_button.setUI((MyButtonUI)MyButtonUI.createUI(m_button));

JComponent类中定义了用于分配UI委托的方法,因为方法声明中不包含特定组件代码。然而,对数据模型而言这是不可能的,因为不存在所有模型可以追溯到的基接口(例如,不存在像Swing模型中的ComponentUI此类的基类)。为此,分配模型的方法在JComponent的子类中定义。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章