Java程序可以用Jflashplayer来播放swf,从而做到了Java中集成swf的效果。
这个方案按道理来说比较正统,缺点有两个
Jflashplayer并不完全支持swf的所有特性,只是有选择地支持,因此一些使用高级版本flash/flex开发的程序中用到的API可能得不到支持。
Jflashplayer价格相对来说比较贵,并不是所有的开发者都支付得起的。
/**
* MyFlash: 播放flash
*
* @author missingu
* By 2013.11.1
*/
package my.audio.swt;
import java.io.File;
import java.io.FileNotFoundException;
import javax.swing.JFrame;
import com.jpackages.jflashplayer.*;
public class MyFlash extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
FlashPanel fPanel;
public MyFlash() throws FileNotFoundException, JFlashLibraryLoadFailedException, JFlashInvalidFlashException {
initialMyflash();
File file = new File("dealerMap.swf");
try {
fPanel = new FlashPanel(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
// TODO: handle exception
} catch (JFlashLibraryLoadFailedException e) {
// TODO: handle exception
e.printStackTrace();
} catch (JFlashInvalidFlashException e) {
// TODO: handle exception
e.printStackTrace();
}
FlashPanel.setRequiredFlashVersion("6");
fPanel.setVariables("myGreeting=hi&myNumber=1&myVar=good%20job");
fPanel.setBounds(0, 0, 800, 600);
fPanel.play();
this.add(fPanel);
//this.show(true);
this.setVisible(true);
fPanel.play(); // 要是没有,可能不直接显示
}
public static void main(String[] args) throws FileNotFoundException, JFlashLibraryLoadFailedException, JFlashInvalidFlashException {
new MyFlash();
}
public void initialMyflash() {
this.setSize(800, 600);
//this.isVisible() ;
this.setResizable(false); // 禁止窗口最大化
}
}
ps:
jflashpanel 下载地址:
http://download.csdn.net/detail/missingu1314/6501967
另外可以采用Java的官方开发团队提供了的DIC (JDesktop Integration Components)软件包,可以在Java程序中直接集成操作系统的浏览器(比如IE)来实现浏览器功能,因此,首先在程序中使用JDIC集成一个NativeBrowser,然后在NativeBrowser中播放含swf文件的网页,也同样可以满足这个需求。