JAVA——改变观感
基本概念
在默认情况下,Swing程序使用Metal观感,可以采用两种方式改变观感。
第一种方式是在Java安装的子目录jre/lib下有一个文件swing.properties。在这个文件中,将属性swing.defaultlaf设置为所希望的观感类名。例如,
swing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel
注意,Metal观感位于javax.swing包中。其他的观感包位于com.sun.java包中,并且不是在每个Java实现中都提供。现在,鉴于版权的原因,Windows和Mac的观感包只与Windows和Mac版本的Java运行时环境一起发布。
提示:由于属性文件中以#字符开始的行被忽略,所以,可以在swing.properties文件中提供几种观感选择,并通过增删#字符来切换选择
采用这种方式开启观感时必须重新启动程序。Swring程序只在启动时读取一次swing.properties文件。
第二种方式是动态地改变观感。这需要调用静态的UIManager.setLookAndFeel方法,并提供所想要的观感类名,然后再调用静态方法SwingUtilities.updateComponetTreeUI来刷新全部的组件集。这里需要向这个方法提供一个组件,并由此找到其他的所有组件。
当UIManager.setLookAndFeel方法没有找到所希望的观感或在加载过程中出现错误时,将会抛出异常。
为了列举安装的所有观感实现,可以调用
UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();
然后采用下列方法得到每一种观感的名字和类名
String name=infos[i].getName();
String ClassName=infos[i].getClassName();
源代码
import java.awt.*;
import javax.swing.*;/*** @version 1.32 2015-06-12* @author Cay Horstmann*/
public class PlafTest
{public static void main(String[] args){EventQueue.invokeLater(() -> {JFrame frame = new PlafFrame();frame.setTitle("PlafTest");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);});}
}
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;/*** A frame with a button panel for changing look-and-feel*/
public class PlafFrame extends JFrame
{private JPanel buttonPanel;public PlafFrame(){buttonPanel = new JPanel();UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();for (UIManager.LookAndFeelInfo info : infos)makeButton(info.getName(), info.getClassName());add(buttonPanel);pack();}/*** Makes a button to change the pluggable look-and-feel.* @param name the button name* @param className the name of the look-and-feel class*/private void makeButton(String name, String className){// add button to panelJButton button = new JButton(name);buttonPanel.add(button);// set button actionbutton.addActionListener(event -> {// button action: switch to the new look-and-feeltry{UIManager.setLookAndFeel(className);SwingUtilities.updateComponentTreeUI(this);pack();}catch (Exception e){e.printStackTrace();}});}
}
运行结果
参考文章
https://blog.csdn.net/moonsilvering/article/details/6597458
https://blog.csdn.net/dandingyy/article/details/7427430
JAVA——改变观感相关推荐
- 基于AWT、Swing的GUI程序 - 改变观感
本程序通用调用UIManager.getInstalledLookAndFeels()方法来获取本机已安装的所有观感,然后分别创建相应数量的Button,用来动态改变观感. 相关API : stati ...
- java改变变量编码方式_Java 10将如何改变您的编码方式
java改变变量编码方式 突出显示Java 10中新的Java局部变量类型推断功能 早在2016年,Java社区就掀起了新的JDK增强提案(JEP): JEP 286 . 现在,两年后,局部变量类型推 ...
- java改变变量编码方式_Java 8中的5个功能将改变您的编码方式
java改变变量编码方式 Java 8在JVM和语言级别都包含了一些非常令人兴奋的功能. 尽管最初为该发行版设想的某些功能已扩展到第9版,或已推出第9版,但实际上有数十个新功能. 许多新添加的内容在编 ...
- java 改变文件权限_Java文件权限
java 改变文件权限 Java File class contains methods to check file permissions for the application user. The ...
- JAVA改变图片大小,将图片改为Jpg格式
JAVA改变图片大小,将图片改为Jpg格式 package util;import javax.imageio.ImageIO; import java.awt.*; import java.awt. ...
- Java改变图片的大小
转自:http://blog.csdn.net/mainstream_code/article/details/7036302 [java] view plaincopyprint? <pre ...
- java改变实参_java中引用传递问题,在函数中修改引用的指向,会不会影响实参?...
是时候展现一下我的JAVA基础知识了,2333. 我按照执行顺序给你写注释好了. Person p1 = new Person(10); //创建了一个对象 //p1.age=10; modify(p ...
- java 改变图片某个坐标点的颜色,并返回给前台显示
找了好久这个方法,最后终于被我我找到了,使用BufferedImage,很好用,这篇文章也包括我前两篇文章的内容(不断刷新页面),因为前面已经说过,这里面就不具体再讲了,上代码吧,为了让半路过来看的朋 ...
- java 改变窗口大小_java 如何让程序窗口随屏幕大小改变
这个问题一直困扰我很长时间了,虽然工作了一段时间,但感觉连这个问题都解决不好的话,实在对不起自己.今天我终于抽出时间,好好网上找了下资料,然后写了个简单的记事本程序,感觉是我想要的结果.所以在这里把程 ...
最新文章
- buu [GXYCTF2019]CheckIn
- Nagios 安装及常见错误
- linux shell实现随机数多种方法(date,random,uuid)
- WampServer64的2.5版本配置多站点
- Spoj REPEATS 后缀自动机+set
- 浙江理工大学计算机考研试卷,2016年浙江理工大学计算机程序设计考研试题.pdf...
- if函数多个条件怎么用c语言,条件函数怎么用(if函数多个条件怎么用)
- dom4j解析xml
- 深入理解之border属性(第一期)
- wrapper.and的用法
- 使用HC05蓝牙模块实现数据无线传输,看完包会
- Mallox勒索病毒溯源注意
- mysql数据表分析统计记录
- 转:攻击JavaWeb应用[2]-CS交互安全
- Andriod-Dagger2
- 计算机组成原理与系统结构习题集
- < Linux >:Linux 进程概念 (1)
- vue-devtools在build时出错
- 滚动轴承振动序列的预处理--CWRU数据集
- 【小游戏】跑酷(带天赋)
热门文章
- Some thoughts on my own O/R Mapping or Code Generation tools
- 企业所得税汇算清缴系统服务器,【图解】汇算清缴风险控制本周五发布,操作流程这里全有!...
- java可变长字符串_具有可变长度的scala字符串插值
- lwip接收文件 stm32_接收数据
- 苹果11如何设置9宫格_4月9日三只可转债回落卖出条件单结果,10日永高转债上市,手把手教你如何设置华宝智投的涨跌幅条件单...
- 鸿蒙系统真实评测,鸿蒙系统和安卓的区别-华为鸿蒙系统使用体验评测
- Oracle的ha模式启停,数据库oracle 11g 的启停操作
- Docker安装mysql并连接
- keras从入门到放弃 (一) 线性回归
- 微信小程序获取用户手机号--官方示例