Swing皮肤

2024-04-27 11:08
文章标签 swing 皮肤

本文主要是介绍Swing皮肤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版权声明:本文转自http://www.javaeye.com/topic/394314;所有所有权归原作者所有;

 

今天用Swing 做了一个模仿QQ2009的登录界面,用到了开源的Look&Feel (Substance),在使用的过程中遇到了一些问题,也学到了一些技巧。
Substance (https://substance.dev.java.net)有很多的外观可以选择,而且都很漂亮,还提供了强大的API供开发者使用。Substance 现在已经
发展到5.2RC 版了,一开始我使用的是5.1版,但是在使用的过程中发现了一些bug,当我使用Substance中提供的水印功能时,出现了许多的异常,这个bug在 5.0的时候是没有的,后来我又下载了最新的5.2RC版,这个问题在5.2版中已经解决了。大家如果需要的话,可以点 点这里下载   。

第一个问题:如何完整的使用Look&Feel?


大家可能会问了,什么叫着完整的使用Look&Feel?这里先不急着说明,先让大家看一副截图;



大家看看上面幅图是否已经用了Look&Feel?  答案是正确的,但是并不完整,因为他的标题栏还没有改变,完整的使用Look&Feel后的截图如下:



是不是觉得很不一样了呢?对于Swing 的老手来说,这个是小菜一碟,但是对于新手来说就比较困难了,因为他们看到的使用look&feel的许多教程都是像
这样的:

 UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel());

或者这样:

try  {
      UIManager.setLookAndFeel(
" org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel " );
    } 
catch  (Exception e) {
      System.out.println(
" Substance Raven Graphite failed to initialize " );
    }


或者说是我自己太菜了吧。总之我在认真学习Swing的外观使用之前我是不知道该如何使标题栏也改变的。
要改变标题栏其实只要一句话就够了,就是在main方法中添加这么一句:

JFrame.setDefaultLookAndFeelDecorated( true );

如果想要让JDialog也改变的话,还要再加上: JDilog.setDefaultLookAndFeelDecorated(true);

下面是最终完成的界面,使用的是Substance中 OfficeBlue2007LookAndFeel



第二个问题,如何给应用程序添加水印或者说是背景?

官方的文档说的很少,也没有具体的使用例子说明,后来下载了Substance的源码来看才发现该如何使用。

以下就是我参考官方源码写的在main方法中的一段核心代码

JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try  {
            SubstanceImageWatermark watermark 
=   new  SubstanceImageWatermark(LoginFrame. class .getResourceAsStream( " /demo/001.jpg " ));
            watermark.setKind(ImageWatermarkKind.SCREEN_CENTER_SCALE);
            SubstanceSkin skin 
=   new  OfficeBlue2007Skin().withWatermark(watermark);   //初始化有水印的皮肤

          
 UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel());
            SubstanceLookAndFeel.setSkin(skin);  //设置皮肤
           
        } 
catch  (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(LoginFrame.
class .getName()).log(Level.SEVERE,  null , ex);
        }


上面的代码中有一句代码的位置是不能变的,那就是 SubstanceLookAndFeel.setSkin(skin);
它必须要在 UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel()); 这句的下面。
否则你看不到水印的效果。下图是有水印和没水印的对比图(左边的是有水印的,右边的是没水印的):



再贴一张官方的一张截图:大家看看Swing写的 Office2007 界面如何?

这篇关于Swing皮肤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940345

相关文章

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

ExtJS之实现华丽的皮肤主题更换

extjs的默认皮肤很好看,但是我们还可以变换样式切换其他皮肤.   1.直接添加其他css文件换肤.好多皮肤上网就可以收到的   如皮肤文件:xtheme-olive.zip下载   把皮肤文件解压,把css文件(如xtheme-olive.css)拷贝到extjs的resources目录下css文件夹里面:      2. 解压皮肤文件,把里面的相应的 image文件夹下的目

JavaSwing项目ATM自动提款机(mysql数据库)+详细报告

目  录 第一章 引言... 1 1.1 设计目的... 1 1.2 相关开发工具介绍... 1 第二章 数据库需求分析... 2 2.1 系统功能分析... 2 2.2 功能模块设计... 2 第三章 数据库概念结构设计... 3 3.1 概念模型... 3 3.2 E-R图... 3 第四章 数据库逻辑结构设计... 4 4.1 关系模型设计... 4 4.2 数据模型的优化... 4 第五

【工具篇】vscode设置护眼色主题皮肤

1、下载对应配置主题的插件:https://marketplace.visualstudio.com/items?itemName=Hyzeta.vscode-theme-github-light&ssr=false#overview 2、放在本地文件夹目录,并使用vscode离线加载插件github light theme 3、使用everything搜索 Github-Light-Theme

Swing之EDT简析

Java Swing 是一个单线程图形库,里面绝大多数的代码不是线程安全的(thread-safe),Swing组件大多数没有做同步线程安全处理,也就是说任何地方都能随便调用,在不同的线程里面随便使用这些API去更新界面元素和设置值,都可能会出现一些问题。 Swing框架使用了Event Queue和EDT(Event-Dispatch-Thread)来保证线程是安全的。在GUI界面上发出的请求

解决linux版搜狗拼音皮肤透明

去官网随便下载一个皮肤,右键以搜狗打开即可

7、java swing 添加 jcheckbox复选框

总体上而言,Java Swing编程有两大特点:麻烦、效果差。        麻烦是说由于设计器的使用不方便(如果您希望使用窗体设计器通过快速拖拽控件建立您的Java Swing GUI程序,请您使用MyEclipse 8.5以上版本,并且需要最高使用权限),所有代码都得手写,如果没有好的编码规范和注释习惯。自己都会被代码淹没。效果差是指运行时的界面。具体的您可以自己尝试发现。 通过一段代码来

5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

5、Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这样,为了操作方便,也只是在大的模块下用布局管理器,在一些小的模块下还是用绝对布局。在一些没要求界面大小改变的窗口,一般采用绝对布局比较容易,但对于后期的修改来说比较麻烦。 5.1、

4、Swing在JPanel中添加背景图片方法

4、Jpanel面板中加载背景图片 在实际应用Java做界面的过程中,常常会涉及到加载背景图片以使页面美化。下面整理了一个小模块以便于调用。 1 package com.tntxia.commonswing.panel; 2 3 import java.awt.*; 4 import javax.swing.JPanel; 5 6 /** 7 * 有背

Java Swing中几种常见对话框(文件对话框、消息对话框、输入对话框、确认对话框、颜色对话框)

1、Dialog类主要方法        JDialog类和JFrame都是Windows的子类,二者的实例都是底层容器,但二者有相似之处也有不同的地方,主要区别是JDialog类创建的对话框必须要依靠于某个窗口。        创建对话框与创建窗口类似,通过建立JDialog的子类来建立一个对话框类,然后这个类的一个实例就是一个对话框。对话框是一个容器,它的默认布局是BorderLayout