JFC系列2之设置可插拔外观

简介:   SUN公司为我们提供了三种可插拔界面(pluggable look-and-feel, 即PLAF)外观,分别为Metal(JAVA的界面外观),Windows和Motif(模拟Unix/X),分别由以下三个类实现: javax.

  SUN公司为我们提供了三种可插拔界面(pluggable look-and-feel, 即PLAF)外观,分别为Metal(JAVA的界面外观),Windows和Motif(模拟Unix/X),分别由以下三个类实现:

javax.swing.plaf.metal.MetalLookAndFeel   

com.sun.java.swing.plaf.windows.WindowsLookAndFeel

com.sun.java.swing.plaf.motif.MotifLookAndFeel

  swing应用程序在启动时,首先会读取系统属性swing.defaultlaf来确定默认界面外观的类名称,一般情况下该属性设置为默认JAVA外观。

  设置外观时只需要调用两个方法,即   UIManager.setLookAndFeel(plaf),参数为String类型,内容是上面的类的名称和SwingUtilities.updateComponentTreeUI(window);参数为Window类型,即所要设置外观的窗体。

  设置这三种界面,我已经封装为静态方法,代码如下:

/** * 该类包装了设置JFrame实体的相关方法。此类必须在jre1.6以上版本使用。 * Copyright: Copyright (c) * Company: DiaoxianSoft development team * @author Geek_Soledad * @creation date 2011-06-24 上午09:58:33 * @version 0.1 */ package easyJFC; import java.awt.Window; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class WindowOption { /** * 设置为Metal外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用。 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsMetal(Window window){ String plaf = "javax.swing.plaf.metal.MetalLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置为Motif外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用。 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsMotif(Window window) { String plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置为Windows外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsWindows(Window window) { String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置窗体风格。 * * @param plaf * @param window */ private static void setWindowStyle(String plaf, Window window) { try { UIManager.setLookAndFeel(plaf); SwingUtilities.updateComponentTreeUI(window); } catch(Exception e) { e.printStackTrace(); } } }

  上面代码已被收录在我的diaoxianSoft中的easyJFC包中。此包暂未完善,亦未做正规测试,不知其有多大通用性,仅作为我个人的私有包,在自己写代码中使用。

  JFC系列将分享一些常见但又让我们这些新手头疼的问题的解决方法,希望大家继续关注,也希望大家一起分享自己的成果。

 

 

目录
相关文章
|
小程序 数据可视化 机器人
分享72个商务商城PHP源码,总有一款适合你
分享72个商务商城PHP源码,总有一款适合你
1388 3
|
缓存 NoSQL 关系型数据库
秒杀项目实战:遇到的问题及解决方案分享
构建了一个基于Springboot2的秒杀系统。项目利用K8S上的主从结构部署Redis和MySQL,通过Traefik作为网关。RabbitMQ在本地虚拟机的docker环境中,用Prometheus+Grafana监控。设计思路包括隐藏秒杀地址以防止脚本攻击,使用Lua脚本保证库存预扣原子性,但初期版本未处理重复订单校验。为防止MQ故障,将订单信息先保存到Redis,再通过脚本发送到MQ。采用分布式锁防止用户重复下单和缓存击穿问题,使用编程式事务确保库存扣减与订单保存一致性。项目通过JMeter测试,观察性能并分析Redis和RabbitMQ的使用情况。完整代码可在GitHub找到。
357 1
秒杀项目实战:遇到的问题及解决方案分享
|
11月前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
1644 7
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
存储 缓存 网络架构
计算机网络:数据交换方式
计算机网络:数据交换方式
451 3
|
12月前
|
Java Android开发
MAT如何使用?
MAT如何使用?
763 4
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
近日,阿里云与世界500强旗下、国内领先的教育服务提供商海亮科技集团(以下简称“海亮科技”)达成合作,联合成立“教育科技数据库创新应用中心”。双方将充分整合优势资源,共同推进教育科技领域的数据库技术研究和国产数据库的应用与发展。
290 8
|
JSON 监控 Java
Elasticsearch 入门:搭建高性能搜索集群
【9月更文第2天】Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 构建。它能够处理大量的数据,提供快速的搜索响应。本教程将指导你如何从零开始搭建一个基本的 Elasticsearch 集群,并演示如何进行简单的索引和查询操作。
636 3
|
存储 Kubernetes 调度
K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(下)
本文全面探讨了Kubernetes集群中Pod的四种关键机制——Pod亲和性、污点(Taints)、容忍度(Tolerations)、生命周期以及健康探测,为读者提供了深入理解并有效应用这些特性的指南。
|
存储 Kubernetes 监控
kubernetes Sidecar 有哪些 资源是共享的
kubernetes Sidecar 有哪些 资源是共享的
634 1