java中的Synth外观

news/2024/7/5 5:35:33
  java中的Synth外观
   Synth,它是一个完整的外观,而不是一个主题,它针对的并不是程序员,而是界面设计人员,让他们不必掌握Java 知识便能够进行相应界面的选择定制。采用了Synth 后,我们不能从现有外观或主题派生子类、修改字体或颜色,而是通过转载不同的XML 文件以达到对相应界面的控制。其实现步骤包括将程序外观设置成Synth 模式以及编辑相对应的XML 文件。
   设置Synth外观模式,可以使用以下代码:

   SynthLookAndFeel synth = new SynthLookAndFeel();
   Class aClass = SynthTest.class;
   InputStream is = aClass.getResourceAsStream("file1.xml");
   synth.load(is, aClass);
   UIManager.setLookAndFeel(synth);

对于XML 中的大多数事情来说,文件的内容由文档类型定义(DTD)描述。只要在XML文件中描述组件,然后把文件传给SynthLookAndFeel 实例的load() 方法,应用程序的外观就会有所不同。以下是XML 控制程序外观的代码:

<?xml version="1.0" encoding="ISO-8859-1"?>
<synth>
 <style id="button">
   <font name="Dotum" size="24" style="BOLD"/>
   <state value="MOUSE_OVER">
      <font name="System" size="48" style="ITALIC"/>
   </state>
 </style>
 <bind style="button" type="region" key="Button"/>
</synth>

以下附上Synth 的演示代码SynthTest.java,与其相对应的XML 文件可选用上面的示例代码,将其更名为synth.xml 即可:

import java.io.InputStream;
import java.text.ParseException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class SynthTest{
   private static void createGUI(){
     SynthLookAndFeel synth = new SynthLookAndFeel();
     try {
        Class classA = SynthTest.class;
        InputStream in = classA.getResourceAsStream("synth.xml");
        if (in == null) {
          System.err.println("Unable to find theme configuration");
          System.exit(-1);
        }
    synth.load(in, classA);
    } catch (ParseException e) {
        System.err.println("Unable to load theme configuration");
        System.exit(-2);
    }

    try {
         UIManager.setLookAndFeel(synth);
    } catch (javax.swing.UnsupportedLookAndFeelException e) {
         System.err.println("Unable to change look and feel");
         System.exit(-3);
    }

   JFrame frame = new JFrame("Test Synth");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JButton button = new JButton("Hello Synth");
   frame.add(button);
   frame.setSize(400, 200);
   frame.setVisible(true);

  }

  public static void main(String[] args){
     javax.swing.SwingUtilities.invokeLater(new Runnable(){
       public void run() {
       createGUI();
      }
     });
 }

}
 

http://www.niftyadmin.cn/n/4413884.html

相关文章

解决java.net.ConnectException: Connection refused:connect报错

报“java.net.ConnectException: Connection refused:connect ”错误 原因和解决&#xff1a; 1&#xff09;端口号被占用&#xff1a;杀死占用端口号&#xff08;一般为8080&#xff09;的进程&#xff0c;释放端口&#xff1b;彻底关闭 Tomcat 服务器&#xff0c;或者重新启…

Servlet执行原理生命周期

既然说Servlet的生命周期&#xff0c;就先说说什么是Servlet。 1.what is Servlet? 如果把Web应用比作一个餐厅&#xff0c;Servlet就是餐厅中的服务员——负责接待顾客、上菜、结账。 从广义上来讲&#xff0c;Servlet规范是Sun公司制定的一套技术标准&#xff0c;包含与We…

使用Xkins为Web应用增加皮肤——为你的Web应用增加换肤能力

作者&#xff1a;未知 来源&#xff1a;月光软件站加入时间&#xff1a;2005-2-28 月光软件站 使用Xkins为Web应用增加皮肤——为你的Web应用增加换肤能力原文出处&#xff1a;http://www.javaworld.com/javaworld/jw-10-2004/jw-1025-xkins.html注&#xff1a;图片请参看原文…

关于Servlet技术体系中的一些重要接口(ServletConfigServeltContextServletHttpServletRequest)及其实现类的源码结构剖析

不说什么开场白了&#xff0c;直接开始吧。 首先说说Servlet的两个重要接口 1.ServletConfig接口 关于ServletConfig接口及实现类&#xff1a;   ServletConfig接口封装了Servlet配置信息&#xff0c;这一点从接口的名称上就能够看出来。而且每一个Servlet都有一个唯一对…

反编译工具jad---用法

Java下的一个简单易用的反编译工具jad, 可以很方便的将.class反编译为.java. 点击下载 一、基本用法 Usage:jad [option(s)] 直接输入类文件名&#xff0c;且支持通配符&#xff0c;如下所示。 c:/java/>jad example1.class c:/java/>jad *.class 结果是将example1.cl…

java对properties文件的操作

在做程序时&#xff0c;往往会有一些固定的或长期的值&#xff0c;这些值或许在将来才会被更改。 由于程序完成时&#xff0c;把这些值写在代码&#xff0c;将来更改起不方便。&#xff08;而且容易忘记在代码中什么地方&#xff0c;哪个文件中时&#xff09;所以&#xff0c;我…

JAVA组件大全 复选框、选项按钮、列表方框、下拉式列表的使用与介绍

7&#xff0d;1&#xff1a;使用JCheckBox组件&#xff1a; 类层次结构图&#xff1a;java.lang.Object--java.awt.Component--java.awt.Container--javax.swing.JComponent--javax.swing.AbstractButton--javax.swing.JToggleButton--javax.swing.JCheckBoxJCheckBox与JRadioB…

JAVA界面组件---swing标签与按钮的使用与介绍

Border,Icon,JLabel,JButton,JToggleButton 6-1:Border的使用 Border类是应用在描绘组件的边界&#xff0c;Border本身是一个interface,里面定义了3个方法&#xff0c;为getBorderInsets()、isBorderOpaque() 、与isBorderOpaque()、与paintBorder().若您想使用Border类来绘制你…