Skip to content
开发文档
能力中心
应用市场
WebOffice
开发者后台

Java 应用集成 WPS 指南 > 创建首个 Java 应用示例 > 完整代码

WPS 开发人员参考
完整代码
import com.wps.api.tree.wps.Application; import com.wps.api.tree.wps.ClassFactory; import com.wps.api.tree.wps.Document; import com.wps.api.tree.wps.events.ApplicationEvents4; import com.wps.runtime.utils.WpsArgs; import com4j.EventCookie; import com4j.Holder; import com4j.Variant; import sun.awt.WindowIDProvider; import sun.awt.X11.XEmbedCanvasPeer; import javax.swing.\*; import java.awt.\*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;/\*\* \* Project : Test WPS JavaAPI \* Author : 金山办公 \* Date : 2019.12.13 \* Description : WPS二次开发Java版本测试程序,Main函数中直接初始化WPS并调用几个常用的二次开发接口,演示功能并提供调用方式的示例代码。 \*/ public class TestMain { private static EventCookie closeCookie = null; public static void main(String\[\] args) { //Linux下必须加这一句 java.lang.System.setProperty("sun.awt.xembedserver", "true"); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame mainFrame = new JFrame(); //设置显示窗口标题 mainFrame.setTitle("WPS JAVA接口调用演示"); //设置窗口显示尺寸 mainFrame.setSize(1280, 720); //置窗口是否可以关闭 mainFrame.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE); //禁止缩放 mainFrame.setResizable(false); //设置窗口是否可见 mainFrame.setVisible(true); //创建一个JPanel用于装载画布 JPanel wpsPanel = new JPanel(); wpsPanel.setLayout(new BorderLayout()); //初始化一个空白的画布用于装载WPS Canvas client = new Canvas() { public void paint(Graphics g) { super.paint(g); } }; //添加画布 wpsPanel.add(client, BorderLayout.CENTER); //添加JPane mainFrame.add(wpsPanel); // 获取用于装载WPS的Canves的句柄 WindowIDProvider pid = (WindowIDProvider)client.getPeer(); XEmbedCanvasPeer peer = (XEmbedCanvasPeer)pid; peer.removeXEmbedDropTarget(); //将画布句柄和长宽等信息作为参数初始化WPS窗体 WpsArgs args = WpsArgs.ARGS\_MAP.get(WpsArgs.App.WPS); args.setWinid(pid.getWindow()); args.setHeight(client.getHeight()); args.setWidth(client.getWidth()); //获取WPS app对象 Application app = ClassFactory.createApplication(); //添加几个功能按钮 JPanel topPanel = new JPanel(); topPanel.setLayout(new FlowLayout()); JButton newButton = new JButton("新建文档"); JButton versionButton = new JButton("输入当前版本号"); JButton registerCloseButton = new JButton("注册关闭事件"); JButton unregisterCloseButton = new JButton("取消注册关闭事件"); topPanel.add(newButton); topPanel.add(versionButton); topPanel.add(registerCloseButton); topPanel.add(unregisterCloseButton); wpsPanel.add(topPanel,BorderLayout.NORTH); //定义按钮的回调事件 //新建空白文档 ActionListener newListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { app.get\_Documents().Add(Variant.getMissing(), Variant.getMissing(), Variant.getMissing(), Variant.getMissing()); } }; //在文档内输入当前版本号 ActionListener versionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { //获取版本号 String version = app.get\_Build(); //光标位置插入文本 app.get\_Selection().TypeText(version); } }; //注册关闭事件 ActionListener closeListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { //注册关闭事件 closeCookie = app.advise(ApplicationEvents4.class, new ApplicationEvents4() { @Override public void DocumentBeforeClose(Document doc, Holder<Boolean> cancel) { JOptionPane.showMessageDialog(null,"关闭事件被拦截"); cancel.value = true; //cancel为true,代表取消关闭 } }); } }; //取消注册关闭事件 ActionListener uncloseListener = new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { closeCookie.close(); closeCookie = null; } }; //按钮绑定回调事件 newButton.addActionListener(newListener); versionButton.addActionListener(versionListener); registerCloseButton.addActionListener(closeListener); unregisterCloseButton.addActionListener(uncloseListener); } }); } }