java synth_Synth - JAVA加油站 - BlogJava

Synth是J2SE5.0里新引入的Swing组件。 Synth是可用户自定义的界面工具(一般被称作skinnable)。用户定义的skin(你叫它皮肤也好)是由一个xml文件控制。这样我们就不必再依靠UIManager去编写属性表(其实都是copy来属性代表的常数放到调整属性的办法里)来控制界面外观。我们只需要到上面的xml文件中调整部件定义就可以了,基本上省去了代码编写的工作。

下面是一个简单的例子, --来自sun java技术论坛

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.io.InputStream;

import java.text.ParseException;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JFrame;

import static javax.swing.JFrame.*;

import javax.swing.UIManager;

import javax.swing.plaf.synth.SynthLookAndFeel;

public class HelloSynth {

public static void main(String args[]) {

Runnable runner = new Runnable() {

public void run() {

SynthLookAndFeel synth = new SynthLookAndFeel();

try {

Class aClass = HelloSynth.class;

InputStream is =

aClass.getResourceAsStream("synth.xml");

if (is == null) {

System.err.println("Missing configuration file");

System.exit(-1);

}

synth.load(is, aClass);

} catch (ParseException e) {

System.err.println("Bad configuration file");

System.exit(-2);

}

try {

UIManager.setLookAndFeel(synth);

} catch

(javax.swing.UnsupportedLookAndFeelException e) {

System.err.println("Cannot change to Synth");

System.exit(-3);

}

JFrame frame = new JFrame("First");

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

JLabel label = new JLabel("Hello, Synth");

label.setHorizontalAlignment(JLabel.CENTER);

frame.add(label);

frame.setSize(300, 100);

frame.setVisible(true);

}

};

EventQueue.invokeLater(runner);

}

}HelloSynth 创建了一个新的SynthLookAndFeel的对象并用load办法读取xml文件:synth.xml。注意synth.load(InputStream,Class>) 的两个参数,InputStream不用进一步讲解,就是读取xml文件的数据流,Class是数据来源类,这里当然是HelloSynth的instance: aClass.

下面是synth.xml

HelloSynth读取synth.xml,创建一个JLabel,然后把它输出到屏幕。可以看到JLabel的颜色,字体都是通过xml文件来设置的。

具体如下:

18-point bold-italic font,

opaque,

foreground color:pink (text color),

background color:yellow

输出:

tt20041019_synth1.gif

下面是另一个 xml的例子:

输出:

tt20041019_synth2.gif 关于Synth所应用到的xml的格式和语法 请参考:

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/doc-files/synthFileFormat.html

关于Swing组件的属性参数 请参考:

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html 参考链接里面的例子

甚至组件的状态--一般以往用到actionListener的地方, 图形icon的路径,对象参数的嵌入(主要是Painter的使用)等等都可以

用xml文件来控制从而减少繁冗的代码编写。 _

### 回答1: mad_synth_frame是在MAD库中用于将MPEG音频解码为PCM样本的函数。它通过使用给定的MAD帧将MPEG编码的音频数据解码为PCM样本来工作。MAD库是一个开源的音频解码器,可用于在各种应用程序中解码MPEG音频。 ### 回答2: mad_synth_frame是MAD(MPEG Audio Decoder)库中的一个函数,用于合成一个音频帧。MAD库是一个用于解码MPEG音频文件的开源库,mad_synth_frame函数是其中的一个重要组成部分。 mad_synth_frame函数的主要功能是将解码后的音频数据合成为一个音频帧,以便后续进行音频播放或其他处理。在合成过程中,该函数会根据输入的解码数据和相关参数,对音频数据进行重构和处理,并输出合成后的音频帧。 mad_synth_frame函数使用了一系列的算法和技术来实现音频的合成。首先,它会根据输入的解码数据获取音频采样值,并将其转换为一个帧(frame)的形式。其次,它会根据解码后的音频数据进行重构和补偿,以提高音频质量和音频采样的准确性。最后,它会对合成后的音频帧进行校正和处理,以满足特定的音频格式和标准要求。 总之,mad_synth_frame函数是MAD库中的一个重要函数,用于将解码后的音频数据合成为一个音频帧。它通过一系列的算法和技术,对音频数据进行重构和处理,以提高音频质量和准确性。这个函数在音频解码和处理方面起着至关重要的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值