本程序通用调用UIManager.getInstalledLookAndFeels()方法来获取本机已安装的所有观感,然后分别创建相应数量的Button,用来动态改变观感。

相关API :

static voidsetLookAndFeel(LookAndFeelnewLookAndFeel)

设置观感

static voidupdateComponentTreeUI(Componentc)

动态更新观感

static UIManager.LookAndFeelInfo[]getInstalledLookAndFeels()

获取本机已安装的所有观感

执行效果:

代码:

package cn.youthol;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Main
{/*** author bruce*/public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){MyFrame frame = new MyFrame("Change LookAndFeel");frame.setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}/** 框架窗口*/
class MyFrame extends JFrame
{private JPanel btnPanel;/** 构造方法*/public MyFrame(String title){//设置标题super(title);//设置大小setSize(800,600);//创建按钮面板btnPanel = new JPanel();add(btnPanel);//创建ButtonLookAndFeel[] names = getAllLookAndFeels();for(LookAndFeel name : names){createButton(name.name,name.className);}}/** 得到所有观感* LookAndFeel是自定义的类,用来存储观感信息*/private LookAndFeel[] getAllLookAndFeels(){UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();LookAndFeel[] lafs = new LookAndFeel[infos.length];for(int i = 0 ; i < lafs.length ; ++i){lafs[i] = new LookAndFeel();}for(int i = 0 ; i < lafs.length ; ++i){System.out.println(i);lafs[i].className = infos[i].getClassName();lafs[i].name = infos[i].getName();}return lafs;}/** 创建Button*/private void createButton(String name,final String UIName){JButton btn = new JButton(name);btnPanel.add(btn);//设置监听器btn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//改变观感try{UIManager.setLookAndFeel(UIName);SwingUtilities.updateComponentTreeUI(MyFrame.this);}catch(Exception ex){ex.printStackTrace();}}});}/** 内部类LookAndFeel* 用来存储观感信息*/private class LookAndFeel{String className; //类名String name; //观感名}
}

基于AWT、Swing的GUI程序 - 改变观感相关推荐

  1. 用Java开发桌面应用程序(Swing开发GUI程序)

    前面学过了面向对象基本概念.面向对象基本特征.Java基本包和API:异常.多线程.IO等. 基本概念 Swing:java中的一个包,负责开发GUI程序 GUI:图形用户界面,一般指可视化桌面系统中 ...

  2. 基于tkinter模块创建GUI程序(python)

    文章目录 前言 一.Tkinter是什么? 二.使用步骤 1.创建应用程序的主窗口对象(根窗口) 2.tkinter根窗口 3.组件拼图 4.Label标签 布局管理系统 5.pack布局管理器 6. ...

  3. 【java毕业设计】基于java+swing+GUI的雷电游戏GUI设计与实现(毕业论文+程序源码)——雷电游戏

    基于java+swing+GUI的雷电游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+GUI的雷电游戏GUI设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  4. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  5. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

  6. 【java毕业设计】基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码)——俄罗斯方块游戏

    基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现,文章末尾 ...

  7. 【java毕业设计】基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码)——连连看游戏

    基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+GUI的连连看游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  8. 【java毕业设计】基于java+swing+CS的图书销售管理系统GUI设计与实现(毕业论文+程序源码)——图书销售管理系统

    基于java+swing+CS的图书销售管理系统GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+CS的图书销售管理系统GUI设计与实现,文章末尾附有本毕业设计的 ...

  9. Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar

    1.创建GUI窗体 首先,直接新建一个默认的空的Java模块即可,随便取个名字 之后再src目录下右键,新建,创建一个Swing的GUI窗体,随便取个名字 给主窗体改个名字 到java代码中生成一个窗 ...

最新文章

  1. Java知识系统回顾整理01基础04操作符07Scanner
  2. .net 面试题系列文章三(附答案)
  3. mysql数据库检表_MYSQL数据库检查数据表和修复数据表
  4. php 获取字符串中的url,php使用正则表达式获取字符串中的URL
  5. 基于jsp+Spring+mybatis的SSM企业门户网站设计和实现
  6. 2020过半,程序员“跳槽”还是“卧槽”,你想好了吗?
  7. 将军令:数据安全平台建设实践 1
  8. CISA 发布关于 Treck TCP/IP 栈中新漏洞的 ICS 安全公告
  9. 武汉大学计算机专业录取分数线,最新武汉大学专业排名录取分数线
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_1_函数式接口的概念函数式接口的定义...
  11. 下载laravel框架
  12. 【金蝶K3】新/老单据转换流程相关表说明(单据转换流程下推老单,钩稽关系可为严格控制)
  13. Unable to negotiate with port 51732: no matching host key type found. Their offer:
  14. mysql存储过程 outfile_mysql存储过程 outfile
  15. 10 分钟搞定 Vim 编辑器常用命令!
  16. 教育培训行业现状分析
  17. visual_studio2012、vs2012下载
  18. C#控件篇 - 图表控件chart - 添加辅助边界线条
  19. 一切照旧... ...
  20. 交换机工作原理/模式

热门文章

  1. 安装mysql后环境变量_环境变量配置2 安装mysql
  2. android toolbar 颜色渐变,android – 如何使渐变形状留在CollapsingToolbarLayout标题后面...
  3. appinventor贪吃蛇制作步骤_旋转RGB制作指导
  4. 精确率、召回率、F1 值、ROC、AUC
  5. Python助力性能测试——报文批量生成
  6. 25岁!零基础想转行做软件测试,可以吗?晚是不晚!
  7. MATLAB 对 提取出的流线 添加颜色
  8. 神威计算机主板型号,十代酷睿高端型Z490主板曝光 总线规格依旧是PCIe 3.0且USB接口并不支持USB 3.2...
  9. 在PyCharm环境下使用Jupyter Notebook
  10. fields and vector spaces