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文件的网页,也同样可以满足这个需求。