Java中Synth外观学习(一)--建立工程加载自定义外观的XML文件
2014-07-13 23:23
295 查看
之前做一个程序希望能更换程序外观,在网上搜了一下,发现Java有一个Synth。是在Java 5.0引入得。这里有一个入门介绍讲得很好, http://www.ibm.com/developerworks/cn/java/j-synth/ 。但是这个演示版本还是太简单了,控件太少,比如连菜单都没有。后来实际使用时还是遇到了很多问题。这里把使用过程中遇到的问题和做法列出来,作个笔记。
第一步:
建立一个空的J***A工程,我这里的IDE是netbeans8.0,JDK用的JDK 1.7
工程目录截图
MainFrame.java
其中下面三行实现Synth外观的加载使用。
SynthSkin.xml
当前SynthSkin.xml是一个空文件,没有定义任何外观内容。注意:根元素必须是synth,否则会产生解析异常。
程序运行效果:
目前看起来是一个没有任何效果。
SynthLookAndFeel 是一个空白外观,本身比提供任何默认外观及行为,所有的绘制效果都是通过委托处理的。我们现在得文件中只有一个根元素,没有定义任何外观,所以运行结果没有体现外观改变。
这里疑问:
图中窗口(实际的JPanel控件)现在的背景颜色为什么是灰色的,这个颜色是如何确定的?
第一步:
建立一个空的J***A工程,我这里的IDE是netbeans8.0,JDK用的JDK 1.7
工程目录截图
MainFrame.java
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package demo; import java.text.ParseException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.plaf.synth.SynthLookAndFeel; /** * * @author hufeiyan */ public class MainFrame extends JFrame { private JPanel contentPanel; public MainFrame() { initialize(); } public static void main(String args[]) { try { SynthLookAndFeel synth = new SynthLookAndFeel(); synth.load(MainFrame.class.getResourceAsStream("synthskin.xml"), MainFrame.class); UIManager.setLookAndFeel(synth); } catch (ParseException | UnsupportedLookAndFeelException ex) { Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); } java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { MainFrame mf = new MainFrame(); mf.setLocationRelativeTo(null); mf.setVisible(true); } }); } private void initialize() { this.setSize(400, 600); this.setContentPane(getJContentPane()); this.setTitle("Synth Look Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private javax.swing.JPanel getJContentPane() { if (contentPanel == null) { contentPanel = new JPanel(); } return contentPanel; } }
其中下面三行实现Synth外观的加载使用。
<span style="white-space:pre"> </span> SynthLookAndFeel synth = new SynthLookAndFeel(); synth.load(MainFrame.class.getResourceAsStream("synthskin.xml"), MainFrame.class); UIManager.setLookAndFeel(synth);
SynthSkin.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <synth> </synth>
当前SynthSkin.xml是一个空文件,没有定义任何外观内容。注意:根元素必须是synth,否则会产生解析异常。
程序运行效果:
目前看起来是一个没有任何效果。
SynthLookAndFeel 是一个空白外观,本身比提供任何默认外观及行为,所有的绘制效果都是通过委托处理的。我们现在得文件中只有一个根元素,没有定义任何外观,所以运行结果没有体现外观改变。
这里疑问:
图中窗口(实际的JPanel控件)现在的背景颜色为什么是灰色的,这个颜色是如何确定的?
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
相关文章推荐
- Java中Synth外观学习(四)--定制JPanel的背景,自定义绘制
- java web.xml被文件加载过程,各节点加载顺序总结
- Java 学习笔记04:Spring XML配置文件Bean
- Java中Synth外观学习(二)--定制JPanel的背景
- Java中Synth外观学习(九)--ComboBox的定制
- Java中Synth外观学习(五)--定制按钮
- Java学习笔记(2)----Web项目中解析XML文件
- java基础加强--eclipse工程下的.classpath文件与加载配置文件进行反射
- Java中Synth外观学习(三)--定制JPanel的背景,使用图片
- 关于Java Web工程中web.xml文件
- Java中Synth外观学习(八)--List的定制二,带滚动条的List
- 基于已经存在的文件建立工程(学习…
- pugixml 学习笔记一 加载文件
- [Java] Spring3.0 - jdom学习:读取xml文件
- eclipse不能自动将java文件编译成class文件,刷新(Refrelsh)和重新建立工程都不行。
- java学习:使用dom4j读写xml文件
- java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载
- 普通Java工程中调用Hibernate的8个执行步骤 (Xml做配置文件)
- Java中Synth外观学习(六)--CheckBox的定制
- java web.xml被文件加载过程及加载顺序小结