Java图形界面设计——substance皮肤
2019独角兽企业重金招聘Python工程师标准>>>
先看一段代码吧。
Java代码
public class LAF_Local_1 extends javax.swing.JFrame {
public LAF_Local_1() {
super("透明窗体");
this.setLayout(new java.awt.FlowLayout());
this.add(new javax.swing.JButton("按钮"));
this.add(new javax.swing.JCheckBox("复选按钮"));
this.add(new javax.swing.JRadioButton("单选按钮"));
this.add(new javax.swing.JProgressBar(20, 100));
this.setSize(new java.awt.Dimension(400, 300));
this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
javax.swing.JFrame.setDefaultLookAndFeelDecorated(true);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
java.awt.Window w = new LAF_Local_1();
w.setVisible(true);
com.sun.awt.AWTUtilities.setWindowShape(w,
new java.awt.geom.Ellipse2D.Double(0, 0,
w.getWidth(), w.getHeight()));
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);
}
});
}
}
先说可能遇到的问题:“com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);”此行代码会报错“Access restriction: The type AWTUtilities is not accessible due to restriction on required library D:\Program Files\jdk1.6.0_24\jre\lib\rt.jar”,而解决的方法也很怪异,要在要在project build path中先移除JRE System Library,再添加库JRE System Library,之后就可以了。类似的问题也可以如此解决。还试过强行运行程序,也没问题。而project build path在哪,下面在介绍添加第三方jar包时,你就能看到它。
在上面的代码中,没用到第三方的jar包,只是掉用几个比较偏的方法也可玩点花样。
javax.swing.JFrame.setDefaultLookAndFeelDecorated(true);这一语句具体意思我还说不清楚,可查看AIP文档。加上此语句,界面看上去很不顺眼,难看。
com.sun.awt.AWTUtilities.setWindowShape(w, new java.awt.geom.Ellipse2D.Double(0, 0, w.getWidth(), w.getHeight()));没有解释,但从方法名及效果上看可知此语句能改变窗体的形状,前提是必须加上上面那句语句。为啥,不知道。
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);添加此语句可改变窗体的透明度。第二个参数的赋值范围是0.0f~1.0f,数值越小,窗体透明度越高。
Swing中还自带了一款皮肤,看上去还蛮顺眼的。将上一段代码中的main方法改一下:
Java代码
public static void main(String[] args) {
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (javax.swing.UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
java.awt.Window w = new LAF_Local_1();
w.setVisible(true);
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);
}
});
}
此款皮肤支持上面提到的改变窗体透明度的方法,不支持上面的改变窗体形状的方法。至于能否满足要求,因人而异喽。接下来将介绍一款第三方的皮肤库:substance.jar。
不同版本的substance皮肤库其皮肤的样式及所在目录可能会不同。我用的是5.2版本的。其所有皮肤都再org.jvnet.substance.skin目录下,皮肤样式类名如下:
AutumnSkin
BusinessSkin
BusinessBlackSteelSkin
BusinessBlueSteelSkin
ChallengerDeepSkin
CremeCoffeeSkin
CremeSkin
DustCoffeeSkin
DustSkin
EmeraldDuskSkin
MagmaSkin
MistAquaSkin
MistSilverSkin
ModerateSkin
NebulaBrickWallSkin
NebulaSkin
OfficeBlue2007Skin
OfficeSilver2007Skin
RavenGraphiteGlassSkin
RavenGraphiteSkin
RavenSkin
SaharaSkin
TwilightSkin
/---------------------------------------------/
SubstanceAutumnLookAndFeel
SubstanceBusinessBlackSteelLookAndFeel
SubstanceBusinessBlueSteelLookAndFeel
SubstanceBusinessLookAndFeel
SubstanceChallengerDeepLookAndFeel
SubstanceCremeCoffeeLookAndFeel
SubstanceCremeLookAndFeel
SubstanceDustCoffeeLookAndFeel
SubstanceDustLookAndFeel
SubstanceEmeraldDuskLookAndFeel
SubstanceMagmaLookAndFeel
SubstanceMistAquaLookAndFeel
SubstanceMistSilverLookAndFeel
SubstanceModerateLookAndFeel
SubstanceNebulaBrickWallLookAndFeel
SubstanceNebulaLookAndFeel
SubstanceOfficeBlue2007LookAndFeel
SubstanceOfficeSilver2007LookAndFeel
SubstanceRavenGraphiteGlassLookAndFeel
SubstanceRavenGraphiteLookAndFeel
SubstanceRavenLookAndFeel
SubstanceSaharaLookAndFeel
SubstanceTwilightLookAndFee
/----------------------------------------------/
SubstanceCrosshatchWatermark
SubstanceImageWatermark
SubstanceNoiseWatermark
SubstanceNullWatermark
SubstancePlanktonWatermark
SubstanceStripeWatermark
SubstanceWatermarkl
以上水印还有待测试
使用substance的方法有多种;以下介绍两种:
/---------------------------1---------------------------/:
将上面例子中的main函数做一下改变
Java代码
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true); //加上此语句连同窗体外框也改变
JDialog.setDefaultLookAndFeelDecorated(true); //加上此语句会使弹出的对话框也改变
try {
//新建一个图片水印,路径可以自己该,使用自己喜欢的图片来做应用程序的水印图片,貌似图片要在src子目录下
SubstanceImageWatermark watermark = new SubstanceImageWatermark(LAF_Local_4.class.getResourceAsStream("001.bmp"));
watermark.setKind(ImageWatermarkKind.APP_CENTER);
watermark.setOpacity((float) 0.7); //更改水印透明度
UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel());
// UIManager.setLookAndFeel(new SubstanceCremeLookAndFeel());
//可根据根据外观类型,设置相应的皮肤,实践证实不一定需要一一对应
// SubstanceSkin skin = new OfficeBlue2007Skin().withWatermark(watermark);
SubstanceSkin skin = new CremeSkin().withWatermark(watermark);
//此语句设置外观
SubstanceLookAndFeel.setSkin(skin);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(LAF_Local_4.class.getName()).log(Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
LAF_Local_4 text = new LAF_Local_4();//实例化窗体对象
text.setVisible(true);
}
});
}
/------------------2--------------------/:
Java代码
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SubstanceImageWatermark watermark = new SubstanceImageWatermark(LAF_Local_4.class.getResourceAsStream("001.bmp"));
watermark.setKind(ImageWatermarkKind.APP_CENTER);
watermark.setOpacity((float) 0.7);
SubstanceLookAndFeel.setSkin(new OfficeBlue2007Skin().withWatermark(watermark));
try {
new LAF_Local_3().setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
在用上面的代码之前,应将substance.jar包导入工程中,注意是工程中。可以在src的同根目录下新建一个lib文件夹,将substance.jar包放入其中。右击工程,在弹出菜单的最下面一行有个Properties选项,左击该选项,在弹出的对话框的左面板有个Java Build Path的选项,左击该选项,此时对话框右面板变更,在对话框的最右边的面板有个Add Jar选项,将substance导入,接下来确定即可。
本人对Substance的了解有限,只能做些表面功夫。而一个好的界面仅有皮肤是不够的,内容及其布局的安排才是真功夫,所以本人觉得界面的美化,还需要加深对布局管理器、面板的了解,这有这样才能做出好看而实用的界面。另外使用第三方的jar包美化界面会出现bug,如:本人在做连连看时用到了substance.jar包,当改变Jtable中的数据时,其框架大小就会初始化,需要将相关值重新设置,这或许就是使用它的代价吧。更多信息可上网查找资料,由于在官网找不到资源,本人使用的substance.jar包也是别人共享的,所以在这也将资源一并上传。
转载于:https://my.oschina.net/rock912/blog/609797
Java图形界面设计——substance皮肤相关推荐
- java图形界面美化_Java图形界面设计——substance皮肤
http://jianweili007-163-com.iteye.com/blog/1141358 ------------------------------------------------- ...
- java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入
那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧: JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel ...
- JAVA图形界面设计
图形界面设计 1 Java Swing 概述 图形化界面(Graphics User Interface,GUI)是指采用图形方式显示的计算机操作用户界面. 通过图形化界面,用户和程序之间可以方便地进 ...
- java图形界面设计——求三角形的面积
这是本学期开学的第一个作业,设计图形界面,实现圆形.矩形.三角形的周长和面积计算,要求涉及抽象.封装.继承.多态的知识点,并且每个图形在计算时都有自己的界面.由于不是专业学java的,代码写的简单粗暴 ...
- java转成图形界面_【转】java图形界面设计(AWT)
[转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1. 基本的java Frame操作. Java的图形界面的类主要包括AW ...
- java图形界面设计 swing之JTable表格的创建使用-添加鼠标监听
最近用java设计了一个桌面管理系统, 在数据展示模块的时候遇到了一点问题,找不到好的展示方式 最后发现了JTable这个类, 主要涉及这个类的构造与使用 注意:JTable都需要在JScrollPa ...
- java图形界面设计代码_Java图形界面设计
一.总述 Java的图形用户界面由各种组件(component)构成,它们主要位于java.awt包与javax.swing包中.Swing与AWT最大的不同是,Swing在实现时,不包含任何本地代码 ...
- 保洁阿姨看完都会了!java图形界面设计代码
二.解析 1. 硬件层的并发优化基础知识 存储器的层次结构图如下: 各级缓存耗时对比: 采用分层缓存的层次结构会带来数据不一致问题,如下图: 那么如何保证数据的一致性,现代CPU处理办法有两种: (1 ...
- JAVA-关于计算器的简单图形界面设计例子(不实现功能)
对于刚刚学习JAVA的小伙伴们来说,对图形界面设计肯定不陌生,我们可以利用javax.swing类库来进行图形界面的简单设计. 下面我们用JAVA图形界面设计的相关基础知识来实现一个简易计算器的界面( ...
最新文章
- 基于hsv的亮度调整算法_改变HSV的H和V部分(比如可以增加图像亮度)
- solaris 10 安装Apache Mysql PHP
- eclipse/myeclipse高亮显示相同变量名 .
- VSCode 初次写vue项目并一键生成.vue模版
- 小波变换(wavelet transform)的通俗解释(三)
- 多个 Linux 发行版考虑移除 Chromium 软件包
- python画折线图虚线_python绘制简单折线图代码示例
- 怎么修改win11睡眠时间
- ccs 移植创建新工程_CCS新工程创建与配置
- QT学习-10/31/2012
- R2017b-Matlab安装教程
- JavaScript等于 == 与 恒等于 === 的区别
- jmeterweb登陆测试_JMeter (2) —— JMeter与WebDriver测试用户登陆以CAS SSO为例(101 Tutorial)...
- 数字图像入门 色彩的抖动
- Swing绝对布局之setBounds
- TKinter —— GUI in python 4. Handing User Event 小组件 赋功能 (概念 必看!)
- Lumion 11软件介绍
- 雅克比(Jacobi)迭代法解线性方程组(Matlab程序)
- leetcode刷题日记(一)—— 数组
- 软件项目中的常见风险因素
热门文章
- 7-46 银行排队问题之单队列多窗口服务 (10 分)
- 北林oj-算法设计与分析-Line up in the canteen(两种解法,附思路)
- SQL Server 2019 创建数据库(利用程序)
- 实验验证离散余弦变换和简单压缩应用,显示对应的原图,dct图和恢复的图像
- 计算机word数字逆序输出,如何让word中的内容倒序排列
- html将两张图重叠居中代码,【CSS技巧】多图片的垂直居中排版
- 图像处理笔记(十八):模板匹配
- C# 8.0 预览特性
- 铁乐学Python_day09_函数
- 搭建配置cacti,采集信息监控