`

Java Synth用法

    博客分类:
  • JAVA
阅读更多

// Java Document

个人认为这东东现在还不是太好,最重要的是不为对组件的位置排版!这也不奇怪人家才刚出不久吗!希望它不久能做到这一点!


1.   Synth概述

Synth是Sun提供的一种新的Look And Feel,与以往的Look And Feel不同,这是个通过配置文件进行定义的,插入式的Look And Feel。在不修改代码的情况下,用户可以仅通过修改配置文件,即可对控件的字体,颜色等属性进行修改。
2.   Synth配置文件
a)        说明:Synth配置文件是一个XML文件,她是整个Synth配置的关键,而要掌握Synth,最主要的就是要熟悉该文件的DTD,因为他规定了什么可以配置,而什么是不可配置的。
3.   Synth元素
a)        说明:synth元素是整个Synth配置文件的根元素,可以在该元素下通过font,color,imagePainter等标签,直接定义全局可用的风格,然后在某个style或者state内部,通过他们的子font,color标记上的idref属性,即可引用这些全局定义好的属性。。

b)        DTD:
<!ELEMENT synth ((%beansPersistance;) | style | bind | font | color |

                 imagePainter | imageIcon)*>

4.   Style元素

a)        说明:style标签的用途就是把font,color等标签归到一起,作为一个完整的风格,她需要通过后续的bind标签,来绑定到具体的控件上。另外clone属性提供了一种继承机制,通过该属性你可以从某个已定义的style当中把内容继承过来,然后修改某个需要改变的部分即可。

b)        DTD:

<!ELEMENT style (property | defaultsProperty | state | font | painter | imagePainter|

                 backgroundImage | opaque | (%beansPersistance;) | imageIcon)*>
c)        例子:

<style id="button">

<opaque value="true"/>

<insets top="4" left="4" right="4" bottom="4"/>

<font name="Dialog" size="12"/>

</style>

 5.   State元素

a)        说明:State标签用于指定控件在某个特定状态时的风格。state标签中的value值在SynthConstants类中定义。

b)        DTD:

<!ELEMENT state (color | font | painter | imagePainter | (%beansPersistance;))*>

c)        例子:

<state value="SELECTED and PRESSED" id="one">

<color value="RED" type="BACKGROUND"/>

</state>

6.   Font元素

a)        说明:定义某种字体风格。

b)        例子:<font name="DIALOG" size="12" style="ITALIC"/>

7.   Color元素:

a)        说明:定义某种颜色。

b)        例子:<color value="RED" type="BACKGROUND"/>

8.   Property元素:

a)        说明:通过键值对的方式定义某些控件特定的属性,属性值将存入类SynthStyle类中,这样做的一个好处就是不用为每个特定属性都定义一个标签,而且以后要扩展也比较方便。可以设置的控件属性,参考最后的表格。

b)        DTD:<!ELEMENT property EMPTY>

c)        例子:

<property key="ScrollBar.allowsAbsolutePositioning" type="boolean" value="false"/>
9.   DefaultsProperty元素

a)        说明:将特定于控件的属性值存入类UIDefaults当中,然后由SynthLookAndFeel传入UIManager当中。通过UIManager.get()方法可以获取到该值。

b)        DTD:<!ELEMENT defaultsProperty EMPTY>

c)        例子:

<object class="javax.swing.plaf.ColorUIResource" id="color">

    <int>255</int>

    <int>0</int>

    <int>0</int>

</object>

<defaultsProperty key="Table.focusCellForeground" type="idref" value="color"/>
10.GraphicsUtils元素

a)        说明:用于定义当前Style所使用的SynthGraphicsUtils实例。

b)        DTD:<!ELEMENT graphicsUtils EMPTY>

c)        例子:

<object class="CustomGraphicsUtils" id="graphics"/>

<graphicsUtils idref="graphics"/>

11.Insets元素:

a)        说明:定义某种间距。

b)        例子:<insets top="1" bottom="2" left="3"/>
12.Bind元素

a)        说明:将属性与一类或者某一特定的控件进行绑定。当type的值为region时,她处理的是一系列的控件。当需要处理某个特定的组件时,需要把type设定为name,然后在组件上调用setName()方法设定名字,这样在程序执行时Synth,将会根据组件的getName()的返回值进行匹配。Key部分是使用正则表达式的方式进行匹配。当一个控件有多个style可匹配,那么这些style将被合并,如果style之间有同名部分,则后定义的style将覆盖之前定义的style。

b)        DTD:<!ELEMENT bind EMPTY>

c)        例子:

<style id="b">

  <font name="DIALOG" size="12" style="BOLD"/>

</style>

<bind style="b" type="region" key="button"/>
13.Painter元素

a)        说明:为当前的Style或者State定义一个用于绘画文本的SynthPainter实例。

b)        DTD:<!ELEMENT painter EMPTY>

c)        例子:

<object class="MyPainter" id="MyPainter"/>

<painter idref="MyPainter"/>
14.ImagePainter元素

a)        说明:为当前的Style或者State定义一个用于绘画图形的SynthPainter实例。可以用该属性来绘制控件的背景。

b)        DTD:<!ELEMENT imagePainter EMPTY>

c)        例子:

<imagePainter path="bg.jpg" method="panelBackground" sourceInsets="2 2 2 2"

paintCenter="true"/>
15.ImageIcon元素

a)        说明:为支持Icon属性的控件绑定一个图标。

b)        例子:

<imageIcon id="icon" path="resources/myImage.png"/>

<property key="RadioButton.icon" value="icon"/>
16.Opaque元素

a)        说明:用于设置一个控件的Opaque属性。

b)        例子:<opaque value="FALSE">
17.BeansPersistence属性

a)        说明:该属性可以为其他标签(imagePainter等)引入一些自定义的类。
18.完整的例子:

a)        配置文件:

<synth>

<style id="emulator">

<imagePainter path="images/phone.png" method="panelBackground"   sourceInsets="2 2 2 2" paintCenter="true"/>

</style>

<bind style="emulator" type="name" key="Emulator.*"/>

</synth>
b)        Java代码:

public class Emulator extends JPanel {

     public static void main(String[] args) throws Exception {

         Runnable runner = new Runnable() {

              public void run() {

                   try {

                       SynthLookAndFeel synth = new SynthLookAndFeel();

                       Class aClass = Emulator.class;

                       InputStream is = aClass.getResourceAsStream("demo.xml");

                       synth.load(is, aClass);

                       UIManager.addAuxiliaryLookAndFeel(synth);

                       JFrame frame = new JFrame("SIP Client");

                       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                       frame.setLayout(new BorderLayout());

                       Emulator emulator = new Emulator();

                       emulator.setName("Emulator");

                       frame.add(emulator, BorderLayout.CENTER);

                       frame.setSize(360, 674);

                       frame.setResizable(false);

                       frame.setVisible(true);

                   } catch (Exception e) {

                       e.printStackTrace();

                   }

              }

         };

         EventQueue.invokeLater(runner);

     }
     public Emulator() {}

}
c)        说明:文件的路径,及下文当中路径相关的操作,都是相对于load()方法中的class参数的位置。当使用SynthLookAndFeel时,需要为每个控件都指定风格,这显然是很累的,一个解决办法就是,不调用UIManager.setLookAndFeel(laf),而是使用UIManager.addAuxiliaryLookAndFeel(laf),即将Synth作为扩展的LookAndFell,这就能继续使用默认的LookAndFeel和定制的SynthLookAndFeel。

分享到:
评论

相关推荐

    调用Synth的步骤

    标题中的“调用Synth的步骤”指的是在Java Swing中使用Synth Look and Feel(UI设计风格)的过程。Synth是Java提供的一种高度可定制的界面外观和感觉库,允许开发者自定义Swing组件的外观,包括颜色、形状、字体等。...

    java实现文字转语音播放

    4. **文本转语音**:使用`synth.speak()`方法将字符串转换为语音并播放: ```java synth.speak("这是一段测试文本"); synth.waitUntilDone(); // 确保所有声音播放完毕再继续执行 ``` 5. **释放资源**:当不再...

    JAVA_API1.6文档(中文)

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    java实现tts(语音开发)

    如果需要合成多个句子,可以使用 `queueParagraph()` 方法将它们加入队列,然后使用 `waitEngineState()` 确保所有句子都已播放完成。 5. **释放资源** 当不再需要 TTS 引擎时,应释放其占用的资源: ```java ...

    Java文字转语音.rar

    接下来,我们可以使用`Synthesizer`对象的`speak`方法将文本转换为语音: ```java synth.speakPlainText("你好,这是一个Java文字转语音的示例。", null); ``` 这里的`"你好,这是一个Java文字转语音的示例。"`是...

    java 实现English发声

    标题“Java实现English发声”指的是使用Java编程语言来创建一个程序,使得计算机能够读出英文文本,即文本转语音(TTS,Text-to-Speech)功能。在Java中,这通常通过Java Speech API(JSAPI)或者一些第三方库来实现...

    Java实现语音播报 实例源码下载

    这个实例源码下载提供了在Java中集成语音合成技术的方法。下面我们将详细探讨Java实现语音播报涉及的技术、库和步骤。 1. **Java Sound API** Java Sound API是Java平台内置的一套音频处理框架,它允许开发者处理...

    Java 1.6 API 中文 New

    里面列出了,Java的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 ...

    java文本转语音服务语音测试文本

    Java文本转语音服务,也称为TTS(Text-to-Speech)技术,是将文本数据转换成可听见的语音输出的一种方法。在IT行业中,这项技术广泛应用于无障碍应用、智能助手、在线教育、自动客服系统等领域,为用户提供方便的...

    java 语音朗读可直接运行绝不骗分数

    要使用Java TTS,首先需要引入javax.speech相关的库。以下是一个简单的Java TTS程序示例: ```java import javax.speech.*; import java.util.*; public class TextToSpeechExample { public static void main...

    javaSwing皮肤大全.rar

    使用Java Swing的Look and Feel皮肤时,需要注意以下几点: 1. 确保引入的LookAndFeel jar包与JVM版本兼容。 2. 在更改LookAndFeel之前,最好先保存当前的LookAndFeel设置,以便在需要时恢复。 3. 更改LookAndFeel...

    JAVA TTS语音

    例如,使用`Synthesizer`的`speak()`方法可以读取字符串并将其转化为语音输出。 下面是一个简化的`Speech.java`可能的代码示例: ```java import javax.speech.*; import java.util.*; public class Speech { ...

    java api最新7.0

    里面列出了Java jdk 1.7的所有类及其使用方法! Java SE Platform 软件包: java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有...

    java界面美化

    - **步骤2**:定义一个`SynthLookAndFeel`对象,并使用`load`方法加载XML文件。 - **步骤3**:调用`UIManager.setLookAndFeel(slf)`来设置LookAndFeel。 ```java // MyButton.java示例代码 package demo.synth; ...

    ttt.zip_TTS java_java tts_tts

    本项目"ttt.zip_TTS java_java tts_tts"提供了使用Java实现TTS功能的示例代码,帮助开发者了解并掌握这一技术。 1. **Java TTS简介** Java TTS(Text-to-Speech)是Java Accessibility API的一部分,它提供了一种...

    基于java的计算器小程序

    在这个项目中,我们将使用Java的基础知识,如类、对象、方法和控制流来构建计算器。 1. **基础结构**: 创建一个新的Java项目,通常包含一个或多个源代码文件(.java),每个文件代表一个类。对于这个计算器,我们...

    java jdk-api-1.6 中文 chmd

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    JavaAPI中文chm文档 part2

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    JavaAPI1.6中文chm文档 part1

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

Global site tag (gtag.js) - Google Analytics