javaswing介绍(Java Swing APIs可插拔式外观风格特性应用)

:暂无数据 2026-07-04 02:30:06 :3

javaswing介绍(Java Swing APIs可插拔式外观风格特性应用)

本篇文章给大家谈谈javaswing介绍,以及Java Swing APIs可插拔式外观风格特性应用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

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

  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委托实例 默认情况下 该委托实例在tal 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的子类中定义

   使用PLAF

  Swing包含几个UI委托集 每个集合中包含了用于大部分Swing组件的ComponentUI实现 且每个这样的集合称为一个PLAF实现

  javax swing plaf包有继承自ComponentUI的抽象类组成 javax swing plaf basic包中的类扩展了这些抽象类用来实现基本的外观 UI委托集合是所有其它外观类用作构建自己的外观的基类 基本外观不能自己使用因为BasicLookAndFeel是一个抽象类 有三个继承自BasicLookAndFeel的可插拔式外观实现

   ·Windows: sun java swing plaf windows WindowsLookAndFeel

   ·CDEMotif: sun java swing plaf motif MotifLookAndFeel

   ·Metal (default): tal MetalLookAndFeel

  同时还有一个模仿苹果用户接口的MacLookAndFeel 但是没有包含在Java 中 必须单独下载 多路外观javax swing plaf multi MultiLookAndFeel扩展了javax swing plaf中的所有抽象类 它运行同时使用多种外观的组合 且有意但并不仅限于和访问外观一起使用 每个多路UI委托的任务是管理每个它们的子UI委托

  每个外观包中都包含了一个继承自抽象类javax swing LookAndFeel BasicLookAndFeel MetalLookAndFeel WindowsLookAndFeel等的类 这是访问每个外观包的中心点 当改变当前外观时 你会用到它们 同时UIManager类(用于管理安装的外观)使用它们来访问当前外观UIDefaults表(其中包含了用于每个Swing组件相应外观的UI委托类名称)

  要想改变应用的当前外观 你只需要简单调用UIManager的setLookAndFeel()方法 并将要使用的外观全名传递给该方法即可 可以使用列表A中的代码在运行时完成该任务

列表A try {   UIManager setLookAndFeel(     sun java swing plaf motif MotifLookAndFeel );   SwingUtilities updateComponentTreeUI(myJFrame); } catch (Exception e) { System err println( Could not load LookAndFeel ); }  

  当外观改变时 Swing实用工具updateComponentTreeUI()通知所有特定组件的孩子 并通知它们丢弃原来的UI委托用来换取一个不同的特定类型委托

  图A B和C演示了金属 图形和窗口外观之间的不同之处

  图A 

  图B

  图C

   创建一个PLAF

  在创建一个PLAF之前 你必须在Java中创建外观的两种设计方法中做出决定 其中一种方法是通过扩展javax swing plaf包来创建外观 另一种方法是通过扩展已经存在的外观包 通常是javax swing plaf basic来实现

  如果要创建一个用于PC的外观 我们不推荐使用扩展来自javax swing plaf包中的外观的方法 这是因为javax swing basic包中已经扩展了几乎整个的javax swing plaf包供我们使用 这样我们可以通过挑选外观需要的东西来进行定制而不需要扩展和实现任何东西

  javax swing plaf包的实现遵循的一个基本原则是使得定制一个外观尽可能的简单 这个原则是LookAndFeel类中组件 颜色和UI类的中心

  javax swing plaf basic包以我们希望的方式描绘轻量级Swing组件 如果你是为一台设备而不是计算机屏幕创建一个外观 那么最好的方法是从零开始扩展javax swing plaf包

lishixinzhi/Article/program/Java/hx/201311/26367

java swing程序

Swing是一个用于开发Java应用程序用户界面的开发工具包。 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。 Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

如果你还想了解更多这方面的信息,记得收藏关注本站。

javaswing介绍(Java Swing APIs可插拔式外观风格特性应用)

本文编辑:admin

更多文章:


selection是什么品牌(selection unique是什么葡萄酒)

selection是什么品牌(selection unique是什么葡萄酒)

其实selection是什么品牌的问题并不复杂,但是又很多的朋友都不太了解selection unique是什么葡萄酒,因此呢,今天小编就来为大家分享selection是什么品牌的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分

2026年11月3日 01:50

四分之一x的补码怎么求(计算机组成原理,的原码补码什么,求解现在这些题目都看不懂了)

四分之一x的补码怎么求(计算机组成原理,的原码补码什么,求解现在这些题目都看不懂了)

大家好,如果您还对四分之一x的补码怎么求不太了解,没有关系,今天就由本站为大家分享四分之一x的补码怎么求的知识,包括计算机组成原理,的原码补码什么,求解现在这些题目都看不懂了的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年11月2日 23:50

interpl(MATLAB中插值函数interpl怎么定义)

interpl(MATLAB中插值函数interpl怎么定义)

各位老铁们,大家好,今天由我来为大家分享interpl,以及MATLAB中插值函数interpl怎么定义的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月2日 23:30

java代码入门教程(零基础自学Java需要什么基础)

java代码入门教程(零基础自学Java需要什么基础)

大家好,如果您还对java代码入门教程不太了解,没有关系,今天就由本站为大家分享java代码入门教程的知识,包括零基础自学Java需要什么基础的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年11月2日 23:00

path的音标(音标[pa:θ]是什么单词)

path的音标(音标[pa:θ]是什么单词)

大家好,关于path的音标很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于音标[pa:θ]是什么单词的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月2日 22:50

collects(collect怎么读)

collects(collect怎么读)

大家好,今天小编来为大家解答以下的问题,关于collects,collect怎么读这个很多人还不知道,现在让我们一起来看看吧!

2026年11月2日 21:10

四舍五入用哪个函数(用于进行四舍五入的数学函数是以下哪一项)

四舍五入用哪个函数(用于进行四舍五入的数学函数是以下哪一项)

各位老铁们,大家好,今天由我来为大家分享四舍五入用哪个函数,以及用于进行四舍五入的数学函数是以下哪一项的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月2日 20:10

手机excel表格制作(手机上怎么做表格)

手机excel表格制作(手机上怎么做表格)

各位老铁们,大家好,今天由我来为大家分享手机excel表格制作,以及手机上怎么做表格的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月2日 20:00

单片机unsigned什么意思(为什么单片机编程变量都要定义成unsigned)

单片机unsigned什么意思(为什么单片机编程变量都要定义成unsigned)

这篇文章给大家聊聊关于单片机unsigned什么意思,以及为什么单片机编程变量都要定义成unsigned对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月2日 19:30

java编程俄罗斯方块(求java编的俄罗斯方块代码! 最好是网络版的!单机版的也好啊!谢谢诶啊)

java编程俄罗斯方块(求java编的俄罗斯方块代码! 最好是网络版的!单机版的也好啊!谢谢诶啊)

本篇文章给大家谈谈java编程俄罗斯方块,以及求java编的俄罗斯方块代码! 最好是网络版的!单机版的也好啊!谢谢诶啊对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年11月2日 18:20

最近更新

模板的正确读音?模板的模读什么
2026-11-03 02:30:13 浏览:0
selection是什么品牌(selection unique是什么葡萄酒)
2026-11-03 01:50:07 浏览:0
热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
sql server2008下载地址(如何下载SQL Server 2008 R2 SP2免费版)
2026-10-05 05:30:29 浏览:6
标签列表